首先,我只想感谢你看我的帖子。对此,我真的非常感激。这是我的问题 - >
比如说我有JSON文档,看起来像这样 - >
{" superhero":[{" hero":" Magneto"," name":" Max Eisenhardt&#34 ;," appearances_count":42},{"英雄":"超人","名称":"克拉克肯特" ;," appearances_count" 42}]}
我在html5和JQuery中使用这个JSON文档绘制了一个表。现在我想编辑我使用JSON文档绘制的表元素,并将编辑后的数据保存在该JSON文档中。
我的HTML就是这样 - >
<table>
<thead>
<th>Hero</th>
<th>Name</th>
<th>AppearanceCount</th>
</thead>
<tbody class="data"></tbody>
</table>
我用来绘制表格的JQuery是这样的 - &gt;
$(document).ready(function(){
$.getJSON("data.json", function(){
var hero = this['hero'];
var name = this['name'];
var numCount = this['appearances_count'];
var tbodyData = "<tr><td>"+hero+"</td><td>"+name+"</td><td>"+numCount+"</td></tr>"
$(".data").append(tbodyData);
});
});
data.json持有上面的json。请任何帮助将不胜感激。再次感谢您查看我的帖子。
答案 0 :(得分:1)
关于如何手动执行此操作的答案将太长,但简短的故事是您应该使用支持双向绑定的库,例如Knockout或Angular
答案 1 :(得分:1)
正如Born2Code所说,最好使用双向绑定库。但是,将表行,字段名称和新值传递给以下函数将使您能够一起更新表和与JSON文档对应的对象。
function editTable(row, fieldName, newVal) {
var column = '';
// Get column number of target cell from table header
var fieldElems = document.getElementsByTagName('th');
for(var i = 0; i < fieldElems.length; i++) {
if(fieldElems[i].innerHTML == fieldName) {
column = i + 1;
break;
}
}
// Update target cell with new value
document.getElementsByClassName('data')[0].children[row - 1].children[column - 1].innerHTML = newVal;
// Update JSON document with new value
data.superhero[row - 1][fieldName] = newVal;
}
为此,您需要确保您的json字段名称(例如“hero”)与表头完全匹配。或者您可以更改函数以直接传递列号而不是fieldName。此外,我将JSON文档视为标准JS对象 - 假设您已对其进行了解析,然后在需要将其发回时重新进行jsonify。
因此,要更改第二个表行(Clark Kent)的“名称”字段以及JSON文档,您将运行:
editTable(2, 'Name', 'Spiderman')