基于单片机Web服务器的JSON属性值显示异常问题排查
问题分析与解决方案
嘿,我一眼就瞅出问题所在啦!这是个典型的JavaScript对象属性访问语法错误,咱们一步步来解决:
错误根源
你在访问动态生成的对象属性时用错了语法!当属性名是变量的时候,不能用.点语法,得用[]方括号语法。
看你代码里的这行关键错误:
document.getElementById("result_text").value += ( property+" = "+obj.property+", " );
这里的obj.property会被JavaScript当成“查找obj里名为property的固定属性”,但你的对象里根本没有叫property的属性,只有property1、property256这类动态命名的属性,所以自然返回undefined了。
修正方案
把obj.property改成obj[property]就搞定!方括号语法会把变量property的实际值(比如循环到i=1时的"property1")作为属性名去对象里查找,这样就能正确拿到对应的值。
修正后的完整代码如下:
<head> <title>JAVASCRIPT_TEST</title> <meta charset="UTF-8"/> </head> <body> <input type="text" id="result_text" size="150"> <input type="button" onclick="test()" value="TEST"> <script> function test() { document.getElementById("result_text").value = ""; var obj = JSON.parse('{"property1":"1234","property256":"5678"}'); for (var i=1; i<=256; i++) { var property = "property"+i; if (property in obj) { // 核心修正:用方括号访问动态属性 document.getElementById("result_text").value += ( property+" = "+obj[property]+", " ); } } } </script> </body>
效果验证
点击TEST按钮后,文本框会正确输出你期望的内容:property1 = 1234, property256 = 5678,
内容的提问来源于stack exchange,提问作者abomin3v3l
相关产品推荐
相关产品推荐

