2013-02-20 19 views
0

我目前有一個JavaScript文件,它將每五秒鐘更改一次證明。一切都很完美,除了前五秒外,沒有任何東西出現。如果我在JavaScript函數被調用的地方放置了一個值,它最初會顯示出來,然後被第一個證明文件替換。JavaScript在X秒內更改文本 - 無初始顯示

以下是調用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++; 
} 

這只是改變了JavaScript文件的問題,這樣的報價[0]是循環之外?

注意:數組中的值已更改爲匿名。這些不是真正的推薦。

+0

與你的問題沒有關係,但我建議使用一個對象數組來保持作者鏈接到報價。 'var quote ='{quote:''Love it!'',author:'Anonymous'}/*,etc .. * /];'這將使管理和更新報價變得更容易。 – 2013-02-20 17:36:16

回答

0

如果如前所述將呼叫添加到changeText(),它可能仍然不起作用。這是因爲DOM尚未被解析。你應該在DOM準備好之後調用它。一種方法是將它放在onload事件中。這是沒有第三方庫的最簡單的方法,但也等待所有圖像加載完畢。這裏是一個例子:

<body onload="changeText()"> 
+0

這當然奏效!非常感謝您的幫助,並且很抱歉,由於項目被拋到了後臺,我花了很長時間才找到您。再次感謝你! – photogal57 2013-03-12 16:16:27

1

只需在代碼中的任意位置添加changeText()(調用您的函數),然後再使用setInterval()即可。那麼,這不是強制性的。

Fiddle

0

setInterval等待執行第一時間之前的間隔持續時間(5秒)。

您可以在設置間隔之前調用它一次,然後您就可以輕鬆前往。例如:

//Call the changeText() function every 5000 miliseconds 
changeText(); 
setInterval(changeText, 5000); 
相關問題