首页 > 解决方案 > Javascript - 如何在第一列中写入每个 % 2 === 0 否则为 2cnd 列

问题描述

我有一个 json 文件。我想将其中的内容写入两个 div。如果 json.length % 2 === 0 则写入<div id="data1">else 写入<div id="data2">.

我收到了 json 文件,但它只写了第一个 if 语句。

我希望代码比我做的更有意义=)

var data1 = document.getElementById("data1");
var data2 = document.getElementById("data2");
loadJSON(function(json) {
  var l = Object.keys(json).length;
  console.log("json start");
  for (var i = 0; i <= l; i++){
    console.log(i);
    if (l % 2 === 0){
      for (x in json) {
        data1.innerHTML="<img src=" + json[x].picture + "/>";
        data1.innerHTML+=json[x].price_thingy.price + json[x].price_thingy.suf;
        console.log("0 " + l); // this never prints
      }
    } else {
      for (x in json) {
        data2.innerHTML="<img src=" + json[x].picture + "/>";
        data2.innerHTML+=json[x].price_thingy.price + json[x].price_thingy.suf;
        console.log("1 " + l); // this never prints
      }
    } 
  }
});

编辑1:

所以,我已经将 l % 2 === 0 更改为 i % 2 === 0 并添加了 innerHTML += 和现在的工作。现在的问题是,我得到了两次。所以基本上我得到了相同的图片和两个div的价格......

知道我该如何解决这个问题吗?

标签: javascriptfor-loopif-statement

解决方案


在您的代码中,您似乎打错了字。在遍历数组时,您应该在这种情况下使用索引变量。因此修复应该是:

if (i % 2 === 0){
...
}

代替:

if (l % 2 === 0){
...
}

作为您的次要问题的答案:您正在循环两次您的 json 结果。

只需稍微重新排序您的代码。结果将是这样的:

loadJSON(function(json) {
  console.log("json start");
  var i = 0;
  for (x in json){
    console.log(i);
    if (i % 2 === 0){
      data1.innerHTML="<img src=" + json[x].picture + "/>";
      data1.innerHTML+=json[x].price_thingy.price + json[x].price_thingy.suf;
      console.log("0 " + l); // this never prints
    } else {
      data2.innerHTML="<img src=" + json[x].picture + "/>";
      data2.innerHTML+=json[x].price_thingy.price + json[x].price_thingy.suf;
      console.log("1 " + l); // this never prints
    }
    i++;
  }
});

推荐阅读