Javascript - Как отобразить текст / строку obj.element в этом случае - PullRequest
0 голосов
/ 09 ноября 2019

Это для использования в простом веб-сервере с микроконтроллером. Учтите, что приложение микроконтроллера имеет в общей сложности 256 свойств, каждое из которых имеет свое значение. Когда браузер делает запрос на чтение свойств из микроконтроллера, в формате JSON будет возвращено случайное количество свойств, начиная от полей perperty1 до property256. Например, свойства 1, 15, 20, 60, 123, 200, 230, 256, то есть почти во всех ответах микроконтроллера он не содержит 256 свойств, это случайное число свойств.

Я хочу отобразить значения свойств, которые были получены от микроконтроллера, в текстовом поле в формате html, но тестовый код ниже не работает, я получаю неожиданный вывод "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>

Ответы [ 3 ]

2 голосов
/ 09 ноября 2019

вы должны использовать 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
}
1 голос
/ 09 ноября 2019

С помощью obj.hasOwnProperty () вы можете проверить, если объект содержит определенное свойство, чтобы получить само свойство, вы можете использовать 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>
1 голос
/ 09 ноября 2019

Когда вы говорите obj.property, вы пытаетесь получить доступ к свойству под названием «свойство». Вы должны использовать скобочные обозначения с динамическими значениями, как в obj[property].

Дополнительная информация на MDN: Средства доступа к свойствам

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...