javascript - 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的价格......
知道我该如何解决这个问题吗?
解决方案
在您的代码中,您似乎打错了字。在遍历数组时,您应该在这种情况下使用索引变量。因此修复应该是:
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++;
}
});
推荐阅读
- c++ - 如何导出/导入使用第三方 .lib 文件的 .dll
- r - 将两列中的数据收集到 1 中并在其他行中添加额外的 NA
- java - 如何使主线程最后完成
- python - 如何将 python 函数应用于 Alteryx 中的 pandas 数据框?
- android - Agora 一对一语音通话
- git - 如何在不从其他分支拉出的情况下继续在主分支上工作
- excel - 替换为 3 个条件失败 - Excel VBA
- mysql - sequlize 与客户共享交易
- python - coco json的图像分割掩码到多边形
- javascript - 在 React 中使用 Grid 时出现 Material UI 错误