倒计时变量循环和显示数组

Countdown var to loop and display array

本文关键字:显示 数组 循环 变量 倒计时      更新时间:2023-09-26

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

另外,document.getElementById(timer).innerHTML = d[i];

应该document.getElementById("timer").innerHTML = d[i];

ID 名称周围需要有引号,因为它们不是变量的名称。变量"计时器"未定义。

此外,您在行if (i <= 0)上缺少一个大括号。我假设你的意思是退出函数,如果这个 if 语句为真。

此外,您在行var d=new Array():上有一个冒号而不是分号

此外,您不能在 h1 中具有段落标签

另外,您应该将所有这些JavaScript封装到一个名为init的函数中。我相信头部的javascript代码在加载html之前运行。因此,javascript 找不到

标签。然后,使用<body onload="init()">作为您的身体标签。

编辑:正如评论者所说,您正在使用变量i来处理多个不相关的事情。

抱歉,但你的代码很混乱;这里有一种方法可以让你的代码工作,以及一个工作示例

<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
  • 计时器
  • clearInterval(countD); 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)即传递函数而不是字符串。