这两天遇到项目中碰到的一个问题:定义了一个方法以后,在调用的时候总是提醒我方法没有定义,然后我就懵了......
function countdown_mcode(second){
var mcode=$(".checkcodeBtn");
if(second>0){
mcode.css({"width":"80px","color":"#eee"});
mcode.html('重新获取'+second);
second--;
setTimeout("countdown_mcode("+second+")",1000);
}else{
mcode.html('重新获取');
mcode.css({"color":"#fff"})
mcode.removeAttr('replay');
}
}
这是倒计时的方法,我定义在了$(document).ready()方法中,然后,就报错了。为什么呢?
首先来说说这个setTimeout方法:
setTimeout这个方法是window对象的方法,用于在指定的毫秒数后调用函数或计算表达式。
window对象,window对象,window对象!!!
也就是说这个方法是执行在全局作用域下,而我定义的方法没有在全局作用域下,肯定找不到了。之前的一篇博客有写到js中的作用域链问题。请点击这里
ok,圆满解决!!!