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
进行比较,除非你严格地将==
与realtrue
值进行比较。只需在条件中单独使用任何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