0

私は現在、5秒ごとに表示される紹介文を変更するJavaScriptファイルを持っています。最初の5秒間を除いて、すべてが完全に機能しますが、何も表示されません。JavaScript関数が呼び出されている場所に値を入力すると、最初に表示され、その後、最初の紹介文に置き換えられます。

これがJavaScriptが呼び出されているHTMLコードです。

<html>
<head>

<SCRIPT language="JavaScript" SRC="textCycle.js"></SCRIPT>
</head>
<body>
    <table border = 0><tr><td style="width:300px;"> <!-- Change the height in order to determine width of quotes -->
    <div id="change"></div></td></tr></table>
</body>
</html>

これがJavascriptです:

var quotes=new Array(5);
var i = 0;
var authors=new Array(5);

//Load Quotes into array
quotes[0]="\"Website is awesome!\"";

quotes[1]="\"Love it!\"";

quotes[2]="\"Awesome site!\"";

quotes[3]="\"This site was very informative and helped with my problem.\"";

quotes[4]="\"Best site for helping with this issue.\"";

//Load authors that correspond with the quote array
authors[0]="Anonymous";

authors[1]="Anonymous";

authors[2]="Anonymous";

authors[3]="Anonymous";

authors[4]="Anonymous";

//Call the changeText() function every 5000 miliseconds
setInterval(changeText, 5000);

//Function that determine what quote and author to put in html.
function changeText(){
    document.getElementById("change").innerHTML=(quotes[i] + '<p style="text-align: right"><i>' + authors[i] + '</i></p>');
    if(i == 4)
        i = 0;
    else
        i++;
}

これは、quotes [0]がループの外側になるようにjavascriptファイルを変更するだけの問題ですか?

注:配列の値は、匿名を維持するために変更されました。これらは本当の証言ではありません。

4

3 に答える 3

1

の前にコードの任意の場所に追加changeText()(関数を呼び出す)するだけsetInterval()です。まあ、それは必須ではありません。

フィドル

于 2013-02-20T17:32:39.197 に答える
0

setIntervalインターバル期間(5秒)待ってから、最初に実行します。

間隔を設定する前に一度呼び出すだけで、準備は完了です。例えば:

//Call the changeText() function every 5000 miliseconds
changeText();
setInterval(changeText, 5000);
于 2013-02-20T17:36:26.530 に答える
0

前述のようにに呼び出しを追加してchangeText()も、それでも機能しない可能性があります。これは、DOMがまだ解析されていないためです。DOMの準備ができたら呼び出す必要があります。これを行う1つの方法は、onloadイベントに入れることです。これは、サードパーティのライブラリがない場合の最も簡単な方法ですが、すべての画像が読み込まれるまで待機します。次に例を示します。

<body onload="changeText()">
于 2013-02-20T17:39:19.523 に答える