If / Else jQuery 跳过未定义的值

If / Else jQuery to skip undefined value

本文关键字:未定义 Else jQuery If      更新时间:2023-09-26

我有这个链接的选择框(演示),使用 JSON 文件来填充基于此脚本的选项。

下面是脚本:

$(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);
}

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

您也可以这样做:

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

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

你可以做这样的事情:

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

使用

$(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":"|"});
    });
});

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