我有以下这些JavaScript代码行,它们在页面加载时运行:
(function my_function() {
//my stuff
})();
$("select#myselect").change( function() {
if ($('select#myselect').val() == '1') {
timer = setTimeout(my_function, 1000*5); //this line throws the error
} else {
if(typeof timer !== 'undefined'){
clearTimeout(timer);
}
}
});
当执行突出显示的行时,将引发:
“未捕获的ReferenceError:未定义my_function”
我该如何解决?
最佳答案
您正在进行所谓的闭包,因此无法(通过设计)访问它。改用此方法(还有一些其他改进...
function my_function() {
//my stuff
}
// Call your function...
my_function();
var $mySelect = $("select#myselect");
$mySelect.on("change", function() {
if ($mySelect.val() == '1') {
timer = setTimeout(my_function, 1000*5); //this line throws the error
} else {
if(typeof timer !== 'undefined'){
clearTimeout(timer);
}
}
});
我还将您对
select#myselect
的查询缓存到了一个变量中...因为它可以提高性能(一定程度上可以)。此外,我为您的更改事件使用了更优选和更新的on()
方法。希望这可以帮助!