Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: для новичков > Бегущая строка


Автор: Luck_brt 1.4.2008, 11:04
Добрый день.
Никак не могу понять почему не работает скрипт... Уже выбился из сил. Пишу от без выходности. 
В консоле никаких ошибок. И при открытии страницы ничего не происходит.
Заранее спасибо.
Код

<html>
<head>
<title>awdad</title>
<script language="javascript">
var msg = "Моя бегущая строка";
var spacer = "...                              ...";
var pos = 0;
function ScrollMessage() {
   window.status = msg.substring(pos, msg.length) + spacer + msg.substring(0, pos);
   pos++;
if (pos > msg.length) pos = 0;
   window.setTimeout("ScrollMessage()",200);
}
ScrollMessage();
</script>
</head>
<body>
</body>
</html>



Код который должен мне показать бегущую строку.

Автор: ksnk 1.4.2008, 11:34
В IE показывает. В FireFox должно быть в параметрах броузера разрешение на смену статусной строки...

Автор: Luck_brt 1.4.2008, 11:36
пробую в опере. Там наверно тоже должно быть разрешение ?
Да и Навигатор тоже не отображает. Может кто знает почему ?
А в ИЕ отображаеться. Спасибо. что ткнул носом.

Автор: bars80080 1.4.2008, 11:38
в опере и ИЕ6 нормально, а вот в ФФ не пашет, а как это разрешение указывается? или это пользователь сам в своём браузере выставляет?

Автор: ksnk 1.4.2008, 11:46
Цитата(bars80080 @  1.4.2008,  11:38 Найти цитируемый пост)
или это пользователь сам в своём браузере выставляет

Да. Инструменты->Настройки->Содержимое->Дополнительно->Изменять текст в строке состояния

Автор: Luck_brt 1.4.2008, 11:48
В опере заработало, а Нaвигатор и ФФ так и отдыхают.

Автор: bars80080 1.4.2008, 12:09
значит ничего не поделаешь, статус видать только декоратив

а ФФ прямо скажем свинью подложили

Автор: IBS 29.7.2008, 11:49
Приветствую!

Подскажите как замутить обычную бегущую строку(слева-напрво, или наоборот), аналогичную тегу <MARQUEE></MARQUEE>. Вы спросите нафига оно надо, если есть тег - дело в том, что он довольно заторможенно перемещает текст, хотелось бы более планую строку. Я понимаю, что код, наверное, простейший, но я только начал изучение JavaScript, а бегущую строку надо добавить на сайт.

Автор: bars80080 29.7.2008, 12:55
так используй скрипт топик стартера. осталось только добавить в хтмл-разметку поле, в которое будешь вводить
Код
<div id="runtxt" style="width: 200px; height: 20px;"> </div>
 к примеру,

и исправить в функции скролл
Код

var el = document.getElementById('runtxt');
function ScrollMessage() {
el.innerHTML = msg.substring(pos, msg.length) + spacer + msg.substring(0, pos);
 всё


надо только не забыть, весь скрипт разместить по коду ниже дива

Автор: IBS 29.7.2008, 13:47
Благодарю bars80080 у меня всё получилось, но всё-таки этот скрипт ни чем не отличается от тега  <MARQUEE></MARQUEE>- дело в том, что текст в них перемещается за счёт появления новых букв(справа или слева), мне кажется, что текст появлялся бы идеально плавно если бы он появлялся за счёт расширения размеров блока(то есть за счёт увеличения width на n-ое число px), но реально ли это сделать через JavaScript я пока что не знаю

Автор: bars80080 29.7.2008, 14:43
сделать можно, но в таком случае посоветовал бы по другому, менять не ширину а положение строки
Код

<style>
#runblock { width: 200px; height: 20px; position: relative; overflow: hidden; }
#runrun1 { position: relative; left: 0px; top: 0px; }
</style>
<div id="runblock"><span id="runrun1">Моя бегущая строка</span></div>
<script>
var x = 0, diap = 200, speed = 3;
var el = document.getElementById('runrun1');
function runrun() {
    if(x < (diap * -1)) x = diap;
    x -= speed;
    el.style.left = x + 'px';
    setTimeout('runrun()', 60);
}
runrun();
</script>


Автор: IBS 29.7.2008, 23:15
Большое СПАСИБО bars80080 - хорошего человека сразу видно.
Очень мне помог!!!

Автор: IBS 2.8.2008, 00:02
Не подскажите что неправильно.
Я немного подредактировал скрипт, который выложил bars80080, 
Код

<div id="runblock"><span id="runrun2">Моя бегущая строка</div>
<script>
var z = -180, diap = 200, speed = 0.5;
var el = document.getElementById('runrun2');
function runrun2() {
    if(z > (diap * 1)) z = -180;
    z += speed;
    el.style.left = z + 'px';
    setTimeout('runrun2()', 10);
if (z == 0) setTimeout('runrun2()',100);/*Что-то не то*/
}
runrun2();
</script>

Теперь он бежит слева направо и, по идее, замедлятся(я думал, что так будет) или останавливается на несколько секунд, когда текст весь появлятся, но вмето этого он ускоряется,  в чём я сморозил?

Автор: IBS 2.8.2008, 16:09
ОТМЕНА - я разобрался  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)