无法为JSON对象获取innerHTML

时间:2014-03-03 04:01:10

标签: javascript html

以下脚本返回错误“无法读取未定义的属性'1',但我可以在Chrome控制台中正确读取该对象。我还尝试了obj [0] .NodeName [1],它在Chrome控制台中显示了值,但是错误说它无法将属性innerHTML设置为null“。

将JSON元素读入HTML中的正确语法是什么?

<script>
var nodeList='[{"NodeName":["Node1","Node2","Node3","Node4","Node5","Node6" ]}]';
obj = JSON.parse(nodeList);
document.getElementById("NodeName").innerHTML=obj.NodeName[1];
</script>   
NODE Name: <span id="NodeName"></span><br> 

4 个答案:

答案 0 :(得分:4)

脚本在文档加载完毕之前运行,而NodeName元素尚未存在于文档中。 在onload事件处理程序中运行脚本,或在span之后移动脚本元素。

答案 1 :(得分:0)

<script>
var nodeList='[{"NodeName":["Node1","Node2","Node3","Node4","Node5","Node6" ]}]';
obj = JSON.parse(nodeList);
document.getElementById("NodeName").innerHTML=obj[0].NodeName[1];
</script>   

请参阅此jsfiddle http://jsfiddle.net/sajith/n2xE9/

答案 2 :(得分:0)

您添加变量nodeList

var nodeList='[{"NodeName":["Node1","Node2","Node3","Node4","Node5","Node6" ]}]';

然后将其解析为对象。

obj = JSON.parse(nodeList);

所以你应该使用:

document.getElementById("NodeName").innerHTML=obj[0].NodeName[1];

答案 3 :(得分:0)

解决方案是将span标记放在脚本上方,如此...

NODE Name: <span id="NodeName"></span><br> 

<script>
var nodeList='[{"NodeName":["Node1","Node2","Node3","Node4","Node5","Node6" ]}]';
obj = JSON.parse(nodeList);
document.getElementById("NodeName").innerHTML=obj[0].NodeName[1];
</script>   

我已经尝试过使用上面的脚本语法,但在脚本修复问题之前移动了span标记。显然这已经在之前的帖子中得到了解答,但我无法找到它。

谢谢大家的帮助。