解释
您想要的是使用 JavaScript 填充 HTML 中的表格(或另一个 DOMElement),一旦加载页面并收到 JSON 对象,就会动态执行 JavaScript。
您想要循环遍历该对象。最好的方法是使用for
循环,并确保我们的循环变量对于我们对象的长度(它的所有属性)仍然有效。
获取 JSON 对象长度的最佳方法是通过myJSONObject.length
:您选择的键myJSONObject并返回他们的计数。
您可以通过以下方式访问存储在 JSON 对象中的值:for
循环(假设定义的循环变量名为i
): myJSONObject[i].theAttributeIWantToGet
价格格式细分
现在,这些价格需要有正确的格式,不是吗?所以我们会检查是否有任何value
属性有小于2之后的字符.
在他们之内。如果是的话,我们再加一个小数0
。我们还添加一个$
在写入格式化值之前。以下是其工作原理的详细说明:
Also: 我为什么使用innerHTML代替appendChild() http://jsperf.com/html-innerhtml-vs-appendchild.
Solution
JSFiddle http://jsfiddle.net/mjE7R/
HTML
<table>
<tbody id="tbody"></tbody>
</table>
JSON
[{
"key": "apple",
"value": 1.90
}, {
"key": "berry",
"value": 1.7
}, {
"key": "banana",
"value": 1.5
}, {
"key": "cherry",
"value": 1.2
}]
JavaScript
Note:JSON 对象将被命名obj
在这种情况下。
var tbody = document.getElementById('tbody');
for (var i = 0; i < obj.length; i++) {
var tr = "<tr>";
/* Verification to add the last decimal 0 */
if (obj[i].value.toString().substring(obj[i].value.toString().indexOf('.'), obj[i].value.toString().length) < 2)
obj[i].value += "0";
/* Must not forget the $ sign */
tr += "<td>" + obj[i].key + "</td>" + "<td>$" + obj[i].value.toString() + "</td></tr>";
/* We add the table row to the table body */
tbody.innerHTML += tr;
}
JSFiddle http://jsfiddle.net/mjE7R/