Javascript li列出来自数组的for循环

时间:2016-09-01 17:52:18

标签: javascript arrays

我想使用下面的属性制作li元素,但它根本不起作用。你能帮我解决问题吗?

var array = [1, 2, 3, "mm", "b", "c", "mm", "y", "mm"];
var list = document.getElementById("list");

function addText(array) {
    for (var i = 0; i <= array.length; i++); {
        var text = array[i];
        if (array[i] == "mm") {
            var listItem = document.createElement("LI");
            listItem.innerHTML = text;
            list.appendChild(listItem);
        }     
    }
};

4 个答案:

答案 0 :(得分:4)

for循环结束时的分号是问题所在。

for (var i = 0; i <= array.length; i++); // <-- remove this

分号使循环对array.length + 1次无效,而不是循环括号之间的代码。您还想将<=更改为<,以免超出数组边界。数组基于零,因此您的9个项目的数组具有0-8的索引。你也可以只比较text,因为你将它复制到一个变量(不知道你的意图是什么,因为你可以彻底摆脱暂时的直接)。

另外,由于您只是添加了文字,因此textContent使用innerHTML

演示:

&#13;
&#13;
var array = [1, 2, 3, "mm", "b", "c", "mm", "y", "mm"];
var list = document.getElementById("list");

function addText(array) {
  for (var i = 0; i < array.length; i++) {
    var text = array[i];
    if (text == "mm") {
      var listItem = document.createElement("LI");
      listItem.textContent = text;
      list.appendChild(listItem);
    }
  }
}

addText(array);
&#13;
<ul id="list">
</ul>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

至少有两个原因导致您的代码无效。

首先:

for 循环除了增加var i之外没有做太多其他事情。你应该在for循环后删除分号。将其更改为:

for (var i = 0; i <= array.length; i++) {

第二

你什么时候打电话给你的javascript?如果您在定义ID为&#34; list&#34;的元素之前运行 document.getElementById 然后 document.getElementById(&#34; list&#34;)将返回 undefined

一种解决方案是在身体末端定义脚本,例如:

  <body>
      <ul id="list">
      </ul>
        <script type="text/javascript">
            var array = [1, 2, 3, "mm", "b", "c", "mm", "y", "mm"];
            function addText(array) {
                var list = document.getElementById("list");
                for (var i = 0; i <= array.length; i++) {
                    var text = array[i];

                    if (array[i] == "mm") {
                        var listItem = document.createElement("LI");
                        listItem.innerHTML = text;
                        list.appendChild(listItem);
                    }     
                }
            };
            window.onload = function(){ addText(array) };
        </script>

  </body>

答案 2 :(得分:0)

var array = [1, 2, 3, "mm", "b", "c", "mm", "y", "mm"];
var list = document.getElementById("list");

function addText(array) {
  
  array.map(function(element) {
    if(element === 'm'){
      var listItem = document.createElement('LI');
      listItem.textContent = element;
      list.appendChild(listItem);
    }
  });
}

addText(array);
<ul id="list">
</ul>

答案 3 :(得分:-1)

列表元素的类型是什么。它应该是一个“ul”元素,以实现你所需要的。