使用innerHTML打印Javascript数组

问题描述 投票:-2回答:1

我是Web编程的菜鸟。我正在尝试在JS页面上打印HTML数组的值。


JS代码:(Full source code

var contactListArray = [228471, 647317];
for (i = 0; i < contactListArray.length; i += 1) {
        document.getElementById('moshtarak').innerHTML = 'list:' + "<br />" + contactListArray[i] + "<br />";
}

HTML代码:(Full source code)

<legend id="moshtarak" align="left"></legend>

结果:

list:
647317

如您所见,当我使用innerHTML =时,它只会给我一个结果,但是有两个值(228471647317)。然后,根据this comment的通知,我测试了innerHTML +=以获取所有两个结果,但这是它的结果:

var contactListArray = [228471, 647317, 454545];
for (i = 0; i < contactListArray.length; i += 1) {
  document.getElementById('moshtarak').innerHTML += 'list:' + "<br />" + contactListArray[i] + "<br />";
}
<legend id="moshtarak" align="left"></legend>
list:
228471
list:
647317
list:
228471
list:
647317

A,看来所有过程都打印了两次。我需要的是一次打印所有数组值,例如:

list:
228471
list:
647317

我在这里有什么问题?任何想法?

提前感谢。

javascript html innerhtml
1个回答
-1
投票

由于代码的可维护性和安全性(代码注入),请避免使用innerHTML。但是使用函数,函数使编程变得有趣...

<!DOCTYPE html>
<html lang="en">
<head>
  <title></title>
  
  <script>
    
    var contactListArray = ["a", "b", "c"];
    
    function createContactList(contactListArray) {
      if(!Array.isArray(contactListArray) || contactListArray.length == 0) {
        throw new Error("contactListArray=" + contactListArray + " should be an array! And not empty!");
      }
      
      var wrap = document.createElement("div");
      contactListArray.forEach(addItem);
      function addItem(item) {
        var contact = document.createElement("address");
        contact.innerText = item;
        wrap.appendChild(contact);
      }
      return wrap;
    }
    
    window.onload = main;
    
    function main() {
      var contacts = createContactList(contactListArray);
      moshtarak.appendChild(contacts);
    }
    
  </script>
  
</head>
<body>

<div id="moshtarak"></div>

</body>
</html>
© www.soinside.com 2019 - 2024. All rights reserved.