我是JavaScript的初学者,想显示HTML中的对象数组。
数据格式如下:
[ {"key":"apple","value":1.90}, {"key":"berry","value":1.7}, {"key":"banana","value":1.5}, {"key":"cherry","value":1.2} ]
我想使用包含三列(id,名称,相关性)的列表来显示它们。ID可以从1自动增加。
谁能告诉我如何编写一个JavaScript代码来显示它?
请给我一些材料或示例进行学习。
您想要的是用JavaScript填充HTML中的表(或另一个DOMElement),一旦加载页面并接收到JSON对象,该表就会动态执行。
您要遍历对象。最好的方法是使用for循环,并确保 循环变量 在对象(所有属性)的长度内保持有效。
for
获取JSON对象长度的最好方法是通过myJSONObject.length:选择 myJSONObject 的键并返回其计数。
myJSONObject.length
您可以通过以下方式在for循环中访问存储在JSON对象中的值(假设定义的循环变量名为i):myJSONObject[i].theAttributeIWantToGet
i
myJSONObject[i].theAttributeIWantToGet
现在,这些价格需要采用正确的格式,不是吗?因此,我们将检查其中的任何value属性是否 少于2个 字符.。如果是这样,我们再加上一个小数0。我们还要$在写入格式化值之前添加一个。以下是其工作方式的细分:
value
.
0
$
obj[i].value.toString().substring(startIndex, length)
obj[i].value.toString().substring(obj[i].value.toString().indexOf('.'),length)
最后结果: obj[i].value.toString().substring(obj[i].value.toString().indexOf('.'), obj[i].value.toString().length) < 2
obj[i].value.toString().substring(obj[i].value.toString().indexOf('.'), obj[i].value.toString().length) < 2
这将返回true或false。如果是真的:圆点后面的数字少于2位!
我们添加if语句和最后一个零:
if
if (obj[i].value.toString().substring(obj[i].value.toString().indexOf('.'), obj[i].value.toString().length) < 2) obj[i].value += "0";
另外: 为什么我使用innerHTML而不是appendChild()。
innerHTML
appendChild()
<table> <tbody id="tbody"></tbody> </table>
[{ "key": "apple", "value": 1.90 }, { "key": "berry", "value": 1.7 }, { "key": "banana", "value": 1.5 }, { "key": "cherry", "value": 1.2 }]
注意: JSON对象将obj在此实例中命名。
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; }