-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

主要错误可能是您color.length在确定您的意思时引用了colors.length.

但是,可以改进有关您的代码的许多其他方面。

  • colors声明数组时分配给它。
  • 您可以使用数组文字而不是new Array().
  • 在一行中声明您的变量,使其成为i局部变量,ChangeIt()但仍可用于区间函数的范围。
  • 将“increment i”行更改为更易于阅读的内容(例如,0在您的三元语句中将 of 赋值为“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 回答
0

如果您检查宝贵的浏览器控制台,您会看到:

未捕获的 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 回答