...setTimeout('startTime()',500);这个函数不执行,怎么办

发布网友 发布时间:2024-10-18 20:04

我来回答

1个回答

热心网友 时间:2024-11-15 11:07

先看浏览器报错(去控制台):

ReferenceError: Can't find variable: startTime

global code — xxx.html:1


说明无法找到startTime函数。因为你把它定义在了xianshi()内部,只有xianshi()内部才能调用startTime。代码执行速度很快,所以当setTimeout在500ms之后试图执行"startTime()"的时候,xianshi早已被执行完毕,运行环境已经不在xianshi里了。setTimeout是window的函数(window.setTimeout),这时候js的作用环境是全局(window),而它无法在全局范围内找到startTime,所以报错。


方法一:把startTime定义为全局函数:

function startTime(){
    // ...        
    document.getElementById("shijian").innerHTML=h+":"+m+":"+s;
    t=setTimeout('startTime()',500);
}

function xianshi() {
    // ...
    startTime();
}


方法二:传入一个函数给setTimeout(js的闭包)

 t = setTimeout(function(){startTime()}, 500);

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com