2013-02-09 2 views
-2

У меня есть этот скрипт, и я пытаюсь создать третье значение (m3), но я не знаю, что делать с линией obj.nodeValue=(obj.nodeValue==m1)?m2:m1;. Также как я могу поместить html в m1, m2 и m3? в частности жирный тег. БлагодаряКак добавить еще одно поле в этот javascript?

<script type="text/javascript"> 
function adMessage() { 

    delay=10000; 

    m1='Place your Thanksgiving orders today!'; 
    m2='All orders must be received by November 20th!'; 
    m3='testing'; 
    obj=document.getElementById('orders').firstChild; 

    obj.nodeValue=(obj.nodeValue==m1)?m2:m1; 

    setTimeout(function(){adMessage()},delay); 
} 
if(window.addEventListener){ 
    window.addEventListener('load',adMessage,false); 
} 
else { 
if(window.attachEvent){ 
    window.attachEvent('onload',adMessage); 
    } 
} 
</script> 


<p id="orders">Place your Thanksgiving orders today!</p> 
+0

Когда вы хотите добавить 3d string? Какой у Вас вопрос? – bsiamionau

ответ

0

Линейка

obj.nodeValue=(obj.nodeValue==m1)?m2:m1; 

является короткая версия этого

if (obj.nodeValue == m1) 
{ 
    obj.nodeValue = m2; 
} 
else 
{ 
    obj.nodeValue = m1; 
} 

В зависимости от вашей логики для отображения значения м3 вам необходимо продлить это решение.

Если вы хотите, чтобы перейти к следующему сообщению в каждом интервале, то, возможно, это ваше решение:

if (obj.nodeValue == m1) 
{ 
    obj.nodeValue = m2; 
} 
else if (obj.nodeValue == m2) 
{ 
    obj.nodeValue = m3; 
} 
else 
{ 
    obj.nodeValue = m1; 
} 

И идея Феликса, конечно, лучше. Если вы разместите свои сообщения в массиве, вы можете легко его расширить.

Для вашей части вопроса о встраивании тегов HTML: вам нужно установить значение innerHTML для элемента вместо nodeValue.

Я терплю бегущую jsfiddle со всеми аспектами вашего вопроса: http://jsfiddle.net/eNape/1/

1

Поскольку вы не имеете бинарный случая больше, вы не можете сравнить текущее значение и решить, основываясь на том, что сообщение, чтобы показать (хорошо , хорошо, вы можете, но он становится уродливым).

Чистым способом было бы создать список сообщений, отслеживать индекс текущего сообщения и продвигать индекс (с обтеканием).

Пример:

var index = 0; 
var messages = [ 
    'Place your Thanksgiving orders today!', 
    'All orders must be received by November 20th!', 
    'testing' 
]; 
var delay = 10000; 

function adMessage() { 
    var node = document.getElementById('orders').firstChild; 

    node.nodeValue = messages[index]; 
    // advance index and wrap around if necessary 
    index = (index + 1) % messages.length; 

    setTimeout(adMessage, delay); 
} 

При правильном размещении кода, вам не нужно слушать load события и избежать снова и снова искать узел DOM внутри функции.

Смежные вопросы