从javascript数组创建一个html无序列表

mar*_*ger 3 html javascript dom

我有一点问题.我正在尝试从javascript数组创建一个无序列表,这是我的代码:

var names = [];
var nameList = "";

function submit()
{
var name = document.getElementById("enter");
var theName = name.value;
names.push(theName);
nameList += "<li>" + names + "</li>";
document.getElementById("name").innerHTML = nameList;
}


<input id="enter" type="text">
<input type="button" value="Enter name" onclick="submit()">
<br>
<br>
<div id="name"></div>
Run Code Online (Sandbox Code Playgroud)

例如,如果我发布2个名称,Name1Name2,我的列表如下所示:

•Name1

•Name1,Name2
Run Code Online (Sandbox Code Playgroud)

我希望它看起来像这样:

•Name1
•Name2
Run Code Online (Sandbox Code Playgroud)

rgt*_*ree 8

如果您查看代码,则只创建一个li包含所有names内容的代码.你想要做的是循环你namesli为每个创建一个单独的,对吗?

更改:

nameList += "<li>" + names + "</li>";
Run Code Online (Sandbox Code Playgroud)

至:

nameList = "";
for (var i = 0, name; name = names[i]; i++) {
  nameList += "<li>" + name + "</li>";
}
Run Code Online (Sandbox Code Playgroud)

如果您对一些更好的实践感兴趣,可以在这里查看您的逻辑重写:http://jsfiddle.net/rgthree/ccyo77ep/


Mou*_*ser 5

function submit()
{
  var name = document.getElementById("enter");
  var theName = name.value;
  names.push(theName);
  document.getElementById("name").innerHTML = "";
  for (var I = 0; I < names.length; I++)
  {
       nameList = "<li>" + names[I] + "</li>";
       document.getElementById("name").innerHTML += nameList;
  }
}
Run Code Online (Sandbox Code Playgroud)

您正在使用数组,当您打印数组时,JavaScript 将显示以逗号分隔的数组的所有条目。您需要遍历数组以使其工作。但是,您可以对此进行优化:

function submit()
{
  var name = document.getElementById("enter");
  var theName = name.value;
  names.push(theName);
  document.getElementById("name").innerHTML = "";
  for (var I = 0; I < names.length; I++)
  {
       nameList = "<li>" + names[I] + "</li>";
       document.getElementById("name").innerHTML += nameList;
  }
}
Run Code Online (Sandbox Code Playgroud)
var names = [];


function displayUserName()
{
  var theName = document.getElementById("enter").value;
  if (theName == "" || theName.length == 0)
  {
     return false; //stop the function since the value is empty.
  }
  names.push(theName);
  document.getElementById("name").children[0].innerHTML += "<li>"+names[names.length-1]+"</li>";
}
Run Code Online (Sandbox Code Playgroud)

在此示例中,通过使用添加ULlis(列表项)的(或无序列表)容器,HTML 在语法上是正确的。

document.getElementById("name").children[0].innerHTML += "<li>"+names[names.length-1]+"</li>"; 
Run Code Online (Sandbox Code Playgroud)

这一行选择了名称为: 的 divname及其第一个子元素 (the ul)。然后将 附加LI到列表中。

正如@FelixKling 所说:避免使用保留或不明确的名称。