我对javascript很新,我正在尝试做一些我认为非常基本的事情。
我创建了倒计时器,并使用“i”作为我的变量来保存0-5的数字。我有一个从d [0]到d [5]包含字符串的“d”数组。
我正在尝试使计时器倒计时将“i”值传递给innerHTML方法数组值,所以我希望它显示d [5] ... d [4] ... d [3] ..等等。
我做错了什么!?请帮助!
<html><head><script language="javascript" type="text/javascript">
var d=new Array():
d[1]="One";
d[2]="Two";
d[3]="Three";
d[4]="Four";
d[5]="Five";
var i=5;
var i=setInterval("timer()",2000); //1000 will run it every 1 second
function timer() {
i--;
if (i <= 0)
clearInterval(countD);
return;
}
}
document.getElementById(timer).innerHTML = d[i];
</script>
</head>
<body>
<h1>
<p id="timer"></p>
</h1>
</body>
</html>
答案 0 :(得分:1)
此外,document.getElementById(timer).innerHTML = d[i];
应为document.getElementById("timer").innerHTML = d[i];
id名称需要在它们周围加引号,因为它们不是变量的名称。变量'timer'未定义。
此外,您在if (i <= 0)
行上缺少大括号。我假设如果if语句为真,你打算退出函数。
此外,行var d=new Array():
此外,您不能在h1
中包含段落标记此外,您应该将所有这些javascript封装到一个名为init
的函数中。我相信头部的javascript代码在加载html之前运行。因此,javascript无法找到
标记。然后,使用<body onload="init()">
作为您的正文标记。
编辑:正如评论者所说,你将变量i用于多个无关的事物。
答案 1 :(得分:1)
我很遗憾地说,但你的代码很乱;这是让代码工作的一种方法,以及a working example:
<html>
<head>
<script language="javascript" type="text/javascript">
var d=new Array();
d[0]="One";
d[1]="Two";
d[2]="Three";
d[3]="Four";
d[4]="Five";
var i=4;
var myTimer =setInterval(timer,2000); //1000 will run it every 1 second
function timer() {
document.getElementById("timer").innerHTML = d[i];
i--;
if (i < 0){
clearInterval(myTimer);
}
}
</script>
</head>
<body>
<h1>
<p id="timer"></p>
</h1>
</body>
</html>
JavaScript的问题
i
声明,一个接一个 - 一个设置为5
,另一个设置为setInterval
计时器countD
中的clearInterval(countD);
是什么?document.getElementById(timer).innerHTML = d[i];
正在尝试使用函数timer
作为getElementById
的参数。它应该在引号中:document.getElementById("timer").innerHTML = d[i];
var d=new Array():
应以;
(分号)结束,而不是:
(冒号)if
语句没有左大括号({
),但它确实有一个结束大括号。setInterval("timer()", 1000)
是有效的JavaScript,但它依赖于eval
,如果可能,应该避免使用setInterval(timer, 1000)
。另一种使用它的首选方法是{{1}},即传递函数而不是字符串。