35

所以,我试图打印出一个数组,将用户输入文本添加到其中,但我想要打印的是数组的有序列表。如您所见,(如果您运行我的代码)列表项只是不断将用户输入添加到其中,并且没有添加带有人名的新列表项。

下面是代码:

 <!DOCTYPE html>
 <html>
 <head>
 First name: <input type="text" id="firstname"><br> 

 <script type="text/javascript">
 var x= [];

 function changeText2(){
var firstname = document.getElementById('firstname').value;
document.getElementById('boldStuff2').innerHTML = firstname;
x.push(firstname);
document.getElementById('demo').innerHTML = x;
 }
 </script>

 <p>Your first name is: <b id='boldStuff2'></b> </p> 
 <p> Other people's names: </p>
 
 <ol>
     <li id = "demo"> </li> 
 </ol>

 <input type='button' onclick='changeText2()'   value='Submit'/> 

 </head>
 <body>
 </body>
 </html>
4

4 回答 4

79

如果要li为每个输入/名称创建一个元素,则必须使用document.createElement [MDN]创建它。

为列表提供 ID:

<ol id="demo"></ol>

并获得它的参考:

var list = document.getElementById('demo');

Node.appendChild 在您的事件处理程序中,使用输入值作为内容创建一个新的列表元素,并使用[MDN]附加到列表中:

var firstname = document.getElementById('firstname').value;
var entry = document.createElement('li');
entry.appendChild(document.createTextNode(firstname));
list.appendChild(entry);

演示

于 2013-07-21T15:46:02.133 回答
5

尝试这样的事情:

var node=document.createElement("LI");
var textnode=document.createTextNode(firstname);
node.appendChild(textnode);
document.getElementById("demo").appendChild(node);

小提琴:http: //jsfiddle.net/FlameTrap/3jDZd/

于 2013-07-21T15:46:14.610 回答
5

我最近遇到了同样的挑战,偶然发现了这个线程,但使用 append 找到了一个更简单的解决方案......

var firstname = $('#firstname').val();

$('ol').append( '<li>' + firstname + '</li>' );

存储 firstname 值,然后使用append将该值作为 an 添加liol. 我希望这有帮助 :)

于 2016-10-06T19:02:48.077 回答
1

上面的答案对我有帮助,但是在提交时添加名称可能很有用(或最佳实践),就像我最后所做的那样。希望这对某人有所帮助。CodePen 示例

    <form id="formAddName">
      <fieldset>
        <legend>Add Name </legend>
            <label for="firstName">First Name</label>
            <input type="text" id="firstName" name="firstName" />

        <button>Add</button>
      </fieldset>
    </form>

      <ol id="demo"></ol>

<script>
    var list = document.getElementById('demo');
    var entry = document.getElementById('formAddName');
    entry.onsubmit = function(evt) {
    evt.preventDefault();
    var firstName = document.getElementById('firstName').value;
    var entry = document.createElement('li');
    entry.appendChild(document.createTextNode(firstName));
    list.appendChild(entry);
  }
</script>
于 2018-01-14T18:31:05.920 回答