代码描述:setInterval()调用 其他函数报错。setInterval()调用其他函数报错源码下载
在使用定时器函数的setInterval()的时候,可能会遇到这样的情况,明明感觉代码没有任何错误,但是使用setInterval()定时器函数循环执行指定函数的时候,却出现在指定作用域找不到函数的现象,下面就介绍一下出现此问题的原因。 代码实例如下:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="author" content="https://www.51qianduan.com/" /> <title>51前端</title> <script type="text/javascript"> window.onload=function(){ var oshow=document.getElementById("show"); var count=0; function done(){ count=count+1; oshow.innerHTML=count; } setInterval("done()",1000); } </script> </head> <body> <div id="show"></div> </body> </html>
上面的代码会报错,说函数done()没有定义,这是因为当使用字符串作为setInterval()第一个参数的时候,它的处理方式有点类似于在表中浏览器的window.eval(),总是在全局作用域查找函数,所以作为局部作用域中的done()函数无法被查找到。 代码修改如下:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="author" content="https://www.51qianduan.com/" /> <title>51前端</title> <script type="text/javascript"> var count=0; var oshow function done(){ count=count+1; oshow.innerHTML=count; } window.onload=function(){ oshow=document.getElementById("show"); setInterval("done()",1000); } </script> </head> <body> <div id="show"></div> </body> </html>
请绑定手机号,在继续操作
注意:只有绑定手机以后,才可使用网站全部功能