js中if使用问题

如题,我想判断a是否是undefined,下面的代码却无效,请问哪里出错了?

$(document).ready(function(){
$('img').each(function() { var a = $(this).attr("alt");
if (a != undefined) {
    $(this).before('') ;}); 
    } else {
$(this).before('<span class="caption">' + a + "</span>") ;}); 
            }
});
阅读 3.1k
4 个回答

图像的alt属性在没有显式赋值的情况下则该属性为null,不是undifined

$(this).before('') ;});
$(this) 指的是全局对象

直接

if (a) { //a!=undefind 有误
    $(this).before('') ;}); 
    } else {
$(this).before('<span class="caption">' + a + "</span>") ;}); 
            }
});

有2个问题需要注意
1是a的值,当你不确定a是多数时,你可以先在控制台打印出来看看是什么,或者直接

if(a) {
    ...
}

// 这里隐式调用了Boolean()方法
if(!a) {}

第二个问题,回调函数中的this指向,并不是指向调用它的那个对象,在回调函数中,this指向一般都在回调函数内部进行了规定,因此在回调函数中要慎用this

// each中,this代表当前被遍历的元素
$('img').each(function() {
});
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题