如果/ Else jQuery跳过未定义的值

时间:2014-03-30 21:49:51

标签: javascript jquery arrays json

我有这个链式选择框(demo),使用JSON文件填充基于this script的选项。

这是脚本:

$(window).bind('load', function() {
   $.getJSON('suggest.json', function(data){
        var $select = $('#mySelectID');

        $.each(data, function (index, o) {
            var $option = $("<option/>").attr("value", o.Box1ID + ":" + o.Box3).text(o.Box1 + "|" + o.Box2 + "|" + o.Box3);
            $select.append($option);
        });

        $("#mySelectID").dynamicDropdown({"delimiter":"|"});
    });
});

我无法使用if语句跳过未定义的值。 JSON文件是这样的:

[{"Box1":"A","Box1ID":"B","Box3":"C"},{"Box1":"E","Box1ID":"F","Box2":"G","Box3":"H"}] 

如果Box2不存在,我希望var $option为:

var $option = $("<option/>").attr("value", o.Box1ID + ":" + o.Box3).text(o.Box1 + "|" + o.Box3);

typeof undefined会在这里工作吗?但我不确定应该定义什么变量。

if (typeof var?? === 'undefined') {
    var $option = $("<option/>").attr("value", o.Box1ID + ":" + o.Box3).text(o.Box1 + "|" + o.Box3); } 
else {
    $("<option/>").attr("value", o.Box1ID + ":" + o.Box3).text(o.Box1 + "|" + o.Box2 + "|" + o.Box3);
}

任何帮助将不胜感激。谢谢。

3 个答案:

答案 0 :(得分:2)

你也可以这样做:

if (! data.Box2) {
    ...
}

未定义,空和空字符串在JavaScript中都测试为false。

答案 1 :(得分:1)

你可以这样做:

   ... .text(o.Box1 + "|" + (o.Box2?oBox2+"|":"")  +  (o.Box3||"") );

答案 2 :(得分:1)

使用

$(window).bind('load', function() {
   $.getJSON('suggest.json', function(data){
        var $select = $('#mySelectID');

        $.each(data, function (index, o) {
            var $option = $("<option/>").attr("value", o.Box1ID + ":" + o.Box3);
            if (typeof data.Box2 === 'undefined')
            {
                $option.text(o.Box1 + "|"  + o.Box3);

            }
            else {
                $option.text(o.Box1 + "|" + o.Box2 + "|" + o.Box3);
            }

            $select.append($option);
        });

        $("#mySelectID").dynamicDropdown({"delimiter":"|"});
    });
});

如果检查不存在的对象方法/属性的typeof,它将返回'undefined'。