2016-04-27 21 views
1
colors = new   Array("red","orange","blue","purple","yellow","brown","green","grey") 

var colorIndex = 0; 
function changeColor(){ 
document.body.bgColor=colors[colorIndex] 
colorIndex = (colorIndex+1)%8) 


} 

function startColorChange(){ 

setInterval("changeColor()",1000) 
} 
window.onload = startColorChange 
console.log(colors.length); 

其關於每1秒反覆更改文檔背景顏色的代碼。 每次變量colorIndex都會增加,並通過更改不同的顏色來顯示輸出。但問題iscolorIndex =(colorIndex + 1)%8。第一次它的值是0,所以紅色將被顯示,但是在下一輪中它的意志值將變成0.125,那麼橙色可以如何顯示,甚至它的索引顯然是1而不是0.125,類似地,每次索引沒有從0增加到1, 2,3,4,5 ......那麼顏色分別是如何變化的。javascript反覆更改文檔背景顏色

colorIndex = (colorIndex+1)%8) 
//       ^^^ 

下建議有一個更清潔的代碼:如果您刪除最後parentesis

+0

爲什麼'parseInt'?無論如何,你正在使用整數。 –

+0

['var colors = [「red」,「orange」,「blue」,「purple」,「yellow」,「brown」,「green」,「gray」], colorIndex = 0; (函數(){ document.body.bgColor = colors [++ colorIndex%colors.length]; },1000);'](https://jsfiddle.net/tusharj/n400pfxh/1) – Tushar

+0

試着仔細閱讀什麼'%'運算符http://www.w3schools.com/js/js_arithmetic.asp它不是簡單的分區 – MysterX

回答

2

你的代碼是工作的罰款。

var colors = ["red", "orange", "blue", "purple", "yellow", "brown", "green", "grey"], 
 
    colorIndex = 0; 
 

 
function changeColor() { 
 
    document.body.bgColor = colors[colorIndex]; 
 
    colorIndex = (colorIndex + 1) % colors.length; 
 
} 
 

 
function startColorChange() { 
 
    setInterval(changeColor, 1000); 
 
} 
 

 
window.onload = startColorChange;