jQuery" undefined" if语句仍然输出未定义的匹配项

时间:2015-04-15 16:15:50

标签: jquery if-statement undefined

我使用jQuery扫描页面,查找页面上的所有链接,以及是否有"标题"属性,在控制台日志中输出它们。

$("a").each(function () {
    var title = $(this).attr('title');
    if (title !== 'undefined') {
        console.log(title + 'blah');
    }
})

我无法理解的是它输出" undefined"很多时候,尽管我指定它不应该使用这个值记录任何东西:

if(title !== 'undefined'){
    console.log(title+'blah');
}

以下是console.log结果的示例:

undefinedblah
About WordPressblah
undefinedblah
comments awaiting moderationblah
Newblah
undefinedblah
My Accountblah
undefinedblah

为什么所有这些undefined选项都会通过我的if声明?

3 个答案:

答案 0 :(得分:1)

只需使用

if(title){
    console.log(title+'blah');
}

检查真实价值。值为undefined而不是'undefined'

  

titlenullundefined0""false falsy p>


旁注,为什么不使用属性选择器;如果没有a

,它会省略title s
$("a[title]").each(function () {
    var title = $(this).attr('title');
    console.log(title + 'blah');
})

答案 1 :(得分:0)

如果要显式检查类型是否未定义,请使用typeof。目前你正在检查变量的类型是" string"它的价值是"未定义"。

if(typeof title !== "undefined") {
    // Code
}

答案 2 :(得分:0)

而不是使用"undefined"使用undefined

$(document).ready(function () {
    $("div a").each(function () {
        var value = $(this).prop("title");
        console.log(value);
        if (value !== undefined) console.log("title: "+value);
    });
});

有关详细信息,请查看此Link