Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果JSON中存在值,请签入jQuery_Javascript_Jquery_Json - Fatal编程技术网

Javascript 如果JSON中存在值,请签入jQuery

Javascript 如果JSON中存在值,请签入jQuery,javascript,jquery,json,Javascript,Jquery,Json,在这个例子中,我想有一个条件,如果这个值是“视频”,那么做这个,如果这个值是“图像”,那么做这个。。。但我似乎无法处理“视频”或“图像” 这是我的职责: [ { "link" : "images/examples/image-3.png", "image" : "images/examples/image-3.png", "title" : "copy" }, { "link" : "images/e

在这个例子中,我想有一个条件,如果这个值是“视频”,那么做这个,如果这个值是“图像”,那么做这个。。。但我似乎无法处理“视频”或“图像”

这是我的职责:

[
    {
        "link"  : "images/examples/image-3.png", 
        "image" : "images/examples/image-3.png", 
        "title" : "copy"
    },
    {
        "link"  : "images/examples/image-3.png", 
        "video" : "video placeholder", 
        "title" : "copy"
    }               
]
$.getJSON(“javascripts/media.json”,函数(数据){
$(“”).prependTo(“内容”);

对于(var i=0;i仅
gallery.image
gallery.video
而不使用任何其他条件将修复它

第一个问题是,您使用的是单个
=
-赋值,而不是
=
===
的比较。这使得第一个(图像)检查始终成功,并用值
true
覆盖存储在其中的图像链接

第二,你不需要将任何东西与
true
进行比较,除非你严格地将
==
与real
true
值进行比较。只需在条件中单独使用任何truthy值即可


最后,您实际操作对象。一旦jQuery为您解码了JSON,这与JSON就不再有任何关系。

检查属性是否存在的标准方法(为特定对象定义)是使用
typeof
运算符并对照字符串
检查“未定义”
,使用身份比较运算符
==
!=

$.getJSON("javascripts/media.json", function(data) {                            
    $("<ul class='gallery'></ul>").prependTo("#content");

    for (var i=0; i<data.length; i++) {
        var gallery = data[i];

        //alert(data[1]);
        if (gallery.image = true) {
            $(
            "<li class='image'>" +
                "<a class=\"imageLink\" href='" + gallery.link + "' rel=\"lightbox[gallery]\">" + 
                    "<img src=" + gallery.image + " alt=" + gallery.title + ">" +
                "</a>"
            + "</li>").appendTo(".gallery");    
        }
        else if (gallery.video = true) {
            $(
            "<li class='video'>" +
                "<a class=\"videoLink\" href='" + gallery.link + "' rel=\"lightbox[gallery]\">" + 
                    "<img src=" + gallery.video + " alt=" + gallery.title + ">" +
                "</a>"
            + "</li>").appendTo(".gallery");    
        }

    }
}).error(function() { alert("error"); });
像这样:

 if(gallery.image) {
 //do stuff with it
 } else if( gallery.video ) {
 //do stuff with video
 }
如果
image
不是
gallery
的属性,则
typeof gallery.image
将始终是
“未定义的”
。使用其中一个标识运算符而不是标准的相等运算符可以避免由于静默类型转换而产生的问题

其他方法存在许多不一致/问题


您自己的代码只需为
if
测试中的
image
属性赋值。

您可能需要了解javascript语法。下面是
if
else
的工作原理:
if (typeof gallery.image !== "undefined")
   // image code
else if (typeof gallery.video !== "undefined")
   // video code