【发布时间】:2014-05-24 00:41:07
【问题描述】:
所以我有这个功能,我在全局声明 var togglesmall,我得到“Uncaught ReferenceError: togglesmall is not defined”
$(document).ready(function(){
if ( !$('.sound,.sound-small').hasClass('clickd') || $('.sound').hasClass('gone') ){
$('body').on('mouseleave', function(){
togglesmall = setTimeout(function(){$('.sound-small').fadeOut()}, 2000);
});
$('body').on('mouseenter', function(){
clearTimeout(togglesmall);
$('.sound-small').fadeIn(500);
});
};
$('.sound').on('click', function(){
$('.sound').fadeOut(1000);
$('.sound').addClass('clickd');
});
});
这不是我第一次收到它,但我不知道为什么会这样。
我正在学习 js,所以我是个新手。整个代码都是我写的,如果你有任何建议,我很感激。
【问题讨论】:
-
togglesmall 是初始化为一个值还是仅声明?你能在你做这个声明的地方包含代码吗?
-
如果要使用全局变量,请使用
window.togglesmall。不鼓励使用togglesmall而不声明,并且在严格模式下无效。 -
我确定在您的代码中看不到该变量的任何明确定义。如果您依赖于隐式声明,它只会发生在
mouseleave上,这通常会发生在之后mouseenter,它会读取该变量。所以当mouseenter首先发生时,隐式声明还没有发生,你会得到错误。 -
我不是在第5行声明了吗? togglesmall = setTimeout... 我尝试使用 window.togglesmall 而不是 togglesmall,但我得到了同样的错误。
-
即使是全局定义的这不是真的,你没有全局定义它。
标签: javascript jquery css