2016-04-27 27 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; のsetInterval(関数(){ document.body.bgColor =色[++の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;