【发布时间】:2017-06-02 12:00:24
【问题描述】:
我想创建一个带有 onclick 函数的 HTML 表来获取行的键和值,到目前为止 onclick 函数正在工作,但它为我显示和空数组,我该如何解决这个问题。谢谢。
当你点击第一行时,我希望它以这种格式显示在控制台日志中:
{ "name":"Clark", "age":29};
这是我的代码
var table = document.getElementById("tableID");
if (table != null) {
for (var i = 0; i < table.rows.length; i++) {
table.rows[i].onclick = function() {
tableText(this);
};
}
}
function tableText(tableRow) {
var myJSON = JSON.stringify(tableRow);
console.log(myJSON);
}
<table align="center" id="tableID" border="1" style="cursor: pointer;">
<thead>
<tr>
<th hidden="hidden"></th>
<th>name</th>
<th>age</th>
</tr>
</thead>
<tbody>
<tr>
<td >Clark</td>
<td>29</td>
</tr>
<tr>
<td >Bruce</td>
<td>30</td>
</tr>
</tbody>
</table>
【问题讨论】:
-
您正在将一个 DOM 元素(即主机对象)传递给 JSON.stringify,您确定这应该有效吗?见How to serialize DOM node to JSON even if there are circular references?。
-
嗨@RobG 谢谢你的回复,我想我走错了方向。我的目标是在单击时获取整个行对象,以便稍后将其传递以编辑 REST API 框架。现在我只想获取 JSON 格式的对象。你能帮我吗?谢谢
-
TR 的字符串化(序列化)版本将是它的outerHTML,它可以作为字符串传递,然后使用 HTML 解析器解析回 DOM 对象。在这种情况下,我认为 JSON 是错误的工具。
-
我明白了,有什么建议吗?
-
根据第一条评论,您可以手动序列化元素,但这似乎有点极端。所以要么只序列化你想要的位,要么使用outerHTML。也许您应该解释“行的键和值”是什么意思,例如点击一行会产生什么(样本输出)?
标签: javascript html