【发布时间】:2013-06-01 01:15:25
【问题描述】:
这是我的问题:
我有 300px 宽度的侧边栏,用户可以隐藏它的一部分,然后侧边栏可能有 100px 宽度。我想在侧边栏隐藏时向元素添加类,当它已满时我想从该元素中删除类。
当我隐藏侧边栏脚本的一部分时效果很好,但是当我再次显示它时。变量 element 未定义。
谁能解释一下这是为什么?
这是我的功能
function checkSidebarWidth()
{
var sidebarWidth = $('.sidebar').width();
var element;
if(sidebarWidth <= 100){
element = $('.sidebarWidth .nav > li > a.active').parents('ul').prev().children();
element.addClass('active');
}else{
if(!typeof(element) === 'undefined'){
element.removeClass('active');
}
}
setTimeout(checkSidebarWidth, 100);
}
【问题讨论】:
-
每次调用此函数时,都会声明一个名为
element的新变量,它以 undefined 开头。如果您的 sidebarWidth 第一个 if 条件失败,它会保持未定义状态,因此永远不会输入else if -
@Willem OP 正在检查未定义的元素
-
if(!typeof(element) === 'undefined') 应该是 if( !(typeof(element)==='undefined') )
-
@san.chez if(!element) 应该足够了
-
@roasted 是的,应该。我只想指出:!优先级高于 ===
标签: javascript jquery