0

所以我试图用javascript顺序旋转一些文本片段。下面的代码是随机的,我的 javascript 是 zilch。有人可以指导我如何使这种轮换顺序吗?谢谢!

网站建在 Concrete5 中。 http://www.travelus.com.au/about-us/trial

<head>
<script type="text/javascript">
//messages keep each message on one line 
var messages=new Array(
'message 1',
'message 2',
'message 3',
'message 4.'
)
//timer in seconds
var timer=5;
function firstMessage(){
newMessage()
setInterval ( "newMessage()", timer*1000 );
}
function newMessage()
{
var randno=Math.floor(Math.random()*(messages.length));
var elem =document.getElementById("msg");
elem.innerHTML = messages[randno];
}
</script>
</head>
<body onload="firstMessage()">
<div id="msg">There is supposed to be some content in this box, but you need Javascript to see it...</div>
</body>
4

3 回答 3

1

试试这个,变量 i 维护要显示的当前元素的索引。到达消息末尾后,它会重置回 0。

var i=0;
function newMessage()
{
  if(i===messages.length)
  {
    i=0;
  }
 var elem =document.getElementById("msg");
 elem.innerHTML = messages[i];
 i=i+1;
}
于 2013-02-22T02:07:29.860 回答
1

现在,您的消息是randno随机选择的,该变量通过生成随机数随机选择您的一条消息。为了使其连续(和旋转,我假设你会喜欢它),你需要创建一个范围高于newMessage函数的变量——基本上在函数调用之外。

为此,您需要执行以下操作:

var index = 0;
function newMessage()
{
    index = (index + 1) % messages.length
    var elem =document.getElementById("msg");
    elem.innerHTML = messages[index];
}

%符号是一个模数,它为您提供 index 的新值除以您拥有的消息数的余数,因此您的数字永远不会高于您拥有的消息数。这称为模运算或时钟运算。

于 2013-02-22T02:07:49.323 回答
0
elem.innerHTML = messages[0];
messages.push(messages.shift());
于 2013-02-22T02:05:37.147 回答