倒计时var到循环和显示数组

时间:2011-05-17 02:14:50

标签: javascript

我对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>

2 个答案:

答案 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}},即传递函数而不是字符串。
相关问题