Javascript Json循环不运行

Javascript Json循环不运行,javascript,jquery,json,loops,foreach,Javascript,Jquery,Json,Loops,Foreach,我有一个JSON数组和一些JavaScript,但是循环没有执行 我找不到错误 HTML: 这里有一个链接: item=json[0]将始终指向第一个元素,循环将不起作用 item=json[0]将始终指向第一个元素,循环将不起作用 您不需要手动设置item变量,它将为您设置为数组中的下一项: $(json).each(function(item) { console.log(item.id); $('<div class="lulu">' + '&

我有一个JSON数组和一些JavaScript,但是循环没有执行

我找不到错误

HTML:

这里有一个链接:

item=json[0]将始终指向第一个元素,循环将不起作用

item=json[0]将始终指向第一个元素,循环将不起作用


您不需要手动设置item变量,它将为您设置为数组中的下一项:

$(json).each(function(item) {
    console.log(item.id);
    $('<div class="lulu">' + 
        '<img src="http://www.w3schools.com/css/img_fjords.jpg" data-src="'+item.pictures+'.jpg"/>' +
        '<img class="lora" src="'+item.picsmall+'"/>'+'</div>'
    ).appendTo('#Mittelt');
});

您不需要手动设置item变量,它将为您设置为数组中的下一项:

$(json).each(function(item) {
    console.log(item.id);
    $('<div class="lulu">' + 
        '<img src="http://www.w3schools.com/css/img_fjords.jpg" data-src="'+item.pictures+'.jpg"/>' +
        '<img class="lora" src="'+item.picsmall+'"/>'+'</div>'
    ).appendTo('#Mittelt');
});

传递到jQuery的each方法的参数是索引,后跟项。在代码中,项指的是索引,而不是项本身。将每个代码更改为类似以下内容:

var test = function() {
  var url = {"cats": [{"id": 1,"name":"one"},{"id":2,"name":"two"}]};
  var json = url["cats"];
  //json.forEach(function(item){ console.log(item); });  // Native JS for each loop
  $(json).each(function(){ console.log(this); }); // jQuery for each loop
};

当然,纯JS for each通常比jQuery快,但在当前场景中这应该没有多大关系

传递到jQuery的each方法的参数后面是索引项。在代码中,项指的是索引,而不是项本身。将每个代码更改为类似以下内容:

var test = function() {
  var url = {"cats": [{"id": 1,"name":"one"},{"id":2,"name":"two"}]};
  var json = url["cats"];
  //json.forEach(function(item){ console.log(item); });  // Native JS for each loop
  $(json).each(function(){ console.log(this); }); // jQuery for each loop
};

当然,纯JS for each通常比jQuery快,但这在当前场景中应该没有多大关系

您正在覆盖项,因此它总是指向第一个元素:item=json[0];移开那条线,我在小提琴上试过了。但这并不是错误:-还要将$json.eachfunctionitem{更改为$json.eachfunctioni,item{@Viktor You Make my day:-,谢谢。但现在我尝试使用3个ID,第二个ID后停止。请看一看,这只是由于您的CSS样式。如果您使用开发人员工具或类似工具检查呈现的HTML,您可以看到所有三个div及其内容都在那里。您正在覆盖项,因此它总是指向第一个元素nt:item=json[0];删除该行。我在fiddle上尝试了它。但不是错误:-同时将$json.eachfunctionitem{更改为$json.eachfunctioni,item{@Viktor You make my day:-,谢谢。但现在我尝试使用3个ID,第二个ID后就停止了。你能看一下吗?这只是因为你的CSS样式。如果你用开发工具或类似工具检查呈现的HTML,你可以看到所有三个div及其内容都在那里。@Thalavier嗯…我想我写错了代码。每一次我d有两张图片。我会设置每个循环,每个id一个div,带图片。@Thalavier-hmm…我想我写错了代码。每个id有两张图片。我会设置每个循环,每个id一个div,带图片。嗯,你们能帮我更改代码吗,因为我不知道。:-hmm,你们能帮我更改代码吗,bec因为我不知道-
$(json).each(function(item) {
    console.log(item.id);
    $('<div class="lulu">' + 
        '<img src="http://www.w3schools.com/css/img_fjords.jpg" data-src="'+item.pictures+'.jpg"/>' +
        '<img class="lora" src="'+item.picsmall+'"/>'+'</div>'
    ).appendTo('#Mittelt');
});
var test = function() {
  var url = {"cats": [{"id": 1,"name":"one"},{"id":2,"name":"two"}]};
  var json = url["cats"];
  //json.forEach(function(item){ console.log(item); });  // Native JS for each loop
  $(json).each(function(){ console.log(this); }); // jQuery for each loop
};