繁体   English   中英

Javascript - 在这种情况下如何显示 obj.element 的文本/字符串

[英]Javascript - How to display text/string of obj.element in this case

这适用于使用微控制器制作的简单网络服务器。 考虑到微控制器应用程序共有 256 个属性,每个属性都有自己的值。 当浏览器请求从微控制器读取属性时,会以 JSON 格式返回随机数量的属性,范围从字段 perperty1 到 property256。 例如,属性 1、15、20、60、123、200、230、256,也就是说,在微控制器的几乎所有答案中,它都不包含 256 个属性,它是随机数量的属性。

我想在 html 的文本框中显示从微控制器接收到的属性值,但是下面的测试代码不起作用,我得到了意外的 output “property1 = undefined, property256 = undefined,”。 我希望它输出“property1 = 1234, property256 = 5678,”

<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>

您应该使用obj[property]来检索property的值(括号表示法, 请参阅 MDN )。 像这样:

 const someProps = { p1: "p1,": p6, "p6:", p123: "p123,"; p201. "p201;". }; const result = document.querySelector("#result"); for (let prop in someProps) { result.textContent += `${prop} = ${someProps[prop]}\n`; // ^ here }
 <pre id="result"></pre>

当您说obj.property时,您正在尝试访问一个名为“property”的属性。 您应该将括号表示法与动态值一起使用,如obj[property]

MDN 上的更多信息: 属性访问器

使用obj.hasOwnProperty()您可以检查 object 是否包含特定属性,要获取属性本身,您可以使用obj[property]object.property

你可以看看这个辩论: JavaScript 属性访问:点符号与括号?

 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 (obj.hasOwnProperty(property)){ let resultFormatted = property + " = " + obj[property] + ", "; document.getElementById("result_text").value += resultFormatted; } } }
 <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"> </body>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM