-3

インデックス変数を操作して、配列値をインクリメントします。コンセプトは正しいと思いますが、JavaScript の動作を妨げている何かが構文にあると思います。

<html>
<head>
<style type="text/css">

 body {font-family: arial;}
 </style>
<script type="text/javascript">
function ChangeIt()
{
var colors;
colors = new Array("red", "blue", "green", "yellow", "purple");
i=0;
document.body.style.backgroundColor = colors[0];

var t = setInterval(function() {
    i=(i>=color.length) ? 0 : i+1;
    document.body.style.backgroundColor = colors[i];
}, 3000);
}
</script>
</head>
<body>
This page begins with a red background and
changes the body background to four other colors
after three seconds.<br />

The Javascript
function is set in header section and called
from the body.
</body>
<script type="text/javascript">
ChangeIt();
</script>
</body>
</html>
4

5 に答える 5

2

Its simple , while setting i value you are using color instead of colors use,

 i=(i>=colors.length) ? 0 : i+1;

now it works fine , just checked

于 2013-10-23T13:22:00.413 に答える
1

Replace color.length with colors.length

于 2013-10-23T13:22:20.057 に答える
0

貴重なブラウザ コンソールを確認すると、次のように表示されます。

Uncaught ReferenceError: 色が定義されていません

colorの代わりに使用しているためですcolors

コード:

function ChangeIt() {
    var colors;
    colors = new Array("red", "blue", "green", "yellow", "purple");
    i = 0;
    document.body.style.backgroundColor = colors[0];

    var t = setInterval(function () {
        i = (i >= colors.length) ? 0 : i + 1;
        document.body.style.backgroundColor = colors[i];
    }, 3000);
}

デモ: http://jsfiddle.net/IrvinDominin/wDC9r/

于 2013-10-23T13:23:04.573 に答える
0

主な間違いはcolor.length、確かに を意味するときに参照することですcolors.length

ただし、コードに関する他の多くの点を改善することができます。

  • colors宣言するときに配列を割り当てます。
  • の代わりに配列リテラルを使用できますnew Array()
  • 変数を 1 行で宣言し、iローカルにしChangeIt()ますが、間隔関数のスコープで引き続き使用できるようにします。
  • 「increment i」行を読みやすいものに変更します (たとえば、03 項ステートメントの「else」として を割り当てます)。

変更点は次のとおりです。

function ChangeIt() {
     var colors = ["red", "blue", "green", "yellow", "purple"], 
         i = 0,  
         fn = function() {
             i = (i < colors.length) ? i + 1 : 0;
             document.body.style.backgroundColor = colors[i];
         },
         t = setInterval(fn, 3000);
     fn(); // To set the background immediately.
};
于 2013-10-23T13:33:53.327 に答える
0

あなたは「s」を忘れました

var t = setInterval(function() {
    i=(i>=color.length) ? 0 : i+1;
    document.body.style.backgroundColor = colors[i];
}, 3000);
}

ただ変える

i=(i>=color.length) ? 0 : i+1;

これに

i=(i>=colors.length) ? 0 : i+1;

.

于 2013-10-23T13:27:10.660 に答える