【发布时间】:2019-09-03 11:50:33
【问题描述】:
我有一个按钮,可以根据从数组中获取的数据将行添加到表中。但是,我只想附加第一行,对于第二、第三等等,它应该替换第一行而不是附加它。我只希望它一次显示一个位置。
我正在努力解决的另一件事:它首先显示对象中的第二个键,而不是仅仅显示数组的结构。这是为什么?
var obj = {
"15800175": {
"posID": "159469",
"scanID": "22597",
"anr": "15800175",
"TVanr": "",
"code": "G-09-27-2E",
"ean": "4710069680575",
"marke": "fox",
"bez": "jersey yellow",
"bez2": "size xl",
"menge": "1",
"ve": "St\u00fcck",
"Dimensionstext": "TT9857BG\r\n",
"Langtext": ""
},
"15100027": {
"posID": "159471",
"scanID": "22597",
"anr": "15100027",
"TVanr": "",
"code": "G-11-03-2A",
"ean": "4712511825411",
"marke": "fox",
"bez2": "jersey L",
"menge": "1",
"ve": "St\u00fcck",
"Dimensionstext": "blue\r\n",
"Langtext": ""
}
}
var counter = 0;
var arr = Object.keys(obj).map(key => obj[key]);
document.getElementById("btnAdd").onclick = function(event) {
//variables
let tbody = document.getElementById("tbodyExample");
//logic
let element = arr[counter] != undefined ? arr[counter] : undefined;
if (element !== undefined) {
var row = document.createElement('tr'); //'<tr id="'+element.posID+'"> </tr>';
row.setAttribute("id", element.posID);
row.innerHTML = '<td>' + element.posID + '</td><td>' + element.code + '</td> <td>' + (element.bez == undefined ? element.bez2 : element.bez) + '</td><td>' + element.anr + '</td><td>' + element.menge + '</td><td>' + element.ve + '</td>';
tbody.appendChild(row);
counter++;
} else {
alert("No more items found");
}
}
<button type="button" id="btnAdd">Add</button>
<table>
<thead></thead>
<tbody id="tbodyExample"></tbody>
</table>
【问题讨论】:
-
如果您正在编写代码,请使用适当的缩进,这将有助于您学习。如果有人需要阅读您的代码(或者您将在编写代码一周后检查您的代码),这也会有所帮助,请检查en.wikipedia.org/wiki/Indentation_style
-
我现在编辑了,对不起!
-
我只想追加第一行,第二、三等应该替换 你想替换表格行还是表格行的值?如果您只使用一行,为什么会有一个添加行的按钮?
-
“我正在努力解决的另一件事:它首先显示对象中的第二个键,而不是仅仅显示数组的结构。为什么会这样?” - 因为对象不保证属性顺序*。如果您将
obj记录到控制台,您将看到15100027首先出现,15800175第二个已经出现。 (* 实际上并非如此,请参阅 stefanjudis.com/today-i-learned/… - 但这是对您在此处看到的内容的解释。) -
我给你做了一个sn-p。更容易讨论
标签: javascript php html arrays json