Javascript 阵列完成后显示未定义

Javascript 阵列完成后显示未定义,javascript,Javascript,这是我的第一个项目之一,我正在尝试从3,2,1开始按“开始”按钮后倒计时!然后显示在文档上点击x和z的时间,但在“Stream!”之后显示undefined。感觉我已经尝试了我目前所知的一切,如果你能帮忙的话,谢谢 var-sec=[“3”,“2”,“1”,“Stream!”]; var a=0; var xcount=0; var zcount=0; document.getElementById(“myBtn”).addEventListener(“单击”,更新程序); 文件。添加了文本列

这是我的第一个项目之一,我正在尝试从3,2,1开始按“开始”按钮后倒计时!然后显示在文档上点击x和z的时间,但在“Stream!”之后显示undefined。感觉我已经尝试了我目前所知的一切,如果你能帮忙的话,谢谢

var-sec=[“3”,“2”,“1”,“Stream!”];
var a=0;
var xcount=0;
var zcount=0;
document.getElementById(“myBtn”).addEventListener(“单击”,更新程序);
文件。添加了文本列表(“按键向下”,按键推动);
函数updatetimer(){
var time=设置间隔(计时器,1000,假);
}
功能键推送(evt){
开关(evt.keyCode){
案例88:
xcount=xcount+1;
document.getElementById(“demo”).innerHTML=xcount;
打破
案例90:
zcount=zcount+1;
document.getElementById(“demo2”).innerHTML=zcount;
打破
}
}
函数计时器(){
var write=(document.getElementById(“demo”).innerHTML=sec[a]);
a+=1;
如果(写入==秒[3]){
清除间隔(时间);
返回;
}
}


时间仅在
updatetimer()的范围内,您不能在其他地方使用它。把它放在全球

var sec = ["3", "2", "1", "Stream!"];
var a = 0;
var xcount = 0;
var zcount = 0;
document.getElementById('myBtn').addEventListener("click", updatetimer);
document.addEventListener("keydown", keyPush);

var time;    //declare the reference to the timer in global so that you can clear it in another function.

function updatetimer() {
    time = setInterval(timer, 1000, false);

}

function keyPush(evt) {
switch (evt.keyCode) {
case 88:
  xcount = xcount + 1;
  document.getElementById('demo').innerHTML= xcount;
  break;
 case 90:
  zcount = zcount + 1;
   document.getElementById('demo2').innerHTML= zcount;
  break;
 }
}

function timer() {
    var write = document.getElementById('demo').innerHTML = sec[a];
    a += 1;
    if (write === sec[3]) {
         clearInterval(time);
         return;
    }
}

时间的作用域为updatetimer函数,且未清除。

您尚未定义变量
time
-因此出现
未定义
消息。您可以这样做:

var time;

function updateTimer() {
    time = setInterval(timer, 1000, false);
}

另外,空的全局变量
time
意味着您可以在其他函数中使用时间,而无需首先将其重新定义为这些函数中的局部变量。

您只需在全局范围内声明
timer
变量。这里有一个非常简单的例子。你自己试试看

var-sec=[“3”,“2”,“1”,“Stream!”];
var a=0;
var xcount=0;
var zcount=0;
无功定时器;
document.getElementById(“myBtn”).addEventListener(“单击”,更新程序);
文件。添加了文本列表(“按键向下”,按键推动);
函数updatetimer(){
时间=设置间隔(计时器,1000,假);
}
功能键推送(evt){
开关(evt.keyCode){
案例88:
xcount=xcount+1;
document.getElementById(“xCount”).innerHTML=xCount;
打破
案例90:
zcount=zcount+1;
document.getElementById(“zCount”).innerHTML=zCount;
打破
}
}
函数计时器(){
var write=(document.getElementById(“倒计时”).innerHTML=sec[a]);
a+=1;
如果(写入==秒[3]){
清除间隔(时间);
返回;
}
}

X计数:

Z计数:

查看开发人员工具控制台<代码>参考错误:未定义时间
var time;

function updateTimer() {
    time = setInterval(timer, 1000, false);
}