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生成することによってメッセージの1つをランダムに選択する変数を使用してランダムに選択されます。それをシーケンシャルにする(そしてあなたが望むように回転させる)には、newMessage関数よりもスコープが高い変数を作成する必要があります-基本的には関数呼び出しの外です。

これを行うには、次のようなことを行います。

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

シンボルはモジュラスであり、%インデックスの新しい値の残りをメッセージの数で割ったものになるため、メッセージの数よりも多くなることはありません。これは、モジュラー演算またはクロック演算と呼ばれます。

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