开发者问题收集

使用 JavaScript 单击按钮时将用户输入添加到列表中

2015-10-07
11175

我试图创建一个 HTML 表单,该表单从多个文本框(在本例中为 3 个)获取文本,并将每个文本框的内容添加到单独的 div 中的列表中,以及创建一个新的对象“员工”,所有操作只需单击一个按钮即可完成。我的目标是模拟将员工添加到数据库,使用员工 ID、名字和姓氏作为变量。我希望使用纯 JavaScript 来实现这一点。

我目前拥有的是:

<form>
  ID Number:
  <br>
  <input type="text" id="idNumber">
  <br>First name:
  <br>
  <input type="text" id="firstName">
  <br>Last name:
  <br>
  <input type="text" id="lastName">
</form>
<br>
<button type="submit" onclick="myFunction(list)">Submit</button>

<div id="container">
  <ul id="list"></ul>
</div>

在单独的 JavaScript 文件中:

function myFunction(list){
  var text = document.getElementById("idNumber","fName","lName").value; 
  var li = "<li>" + text + "</li>";
  document.getElementById("list").replaceChild(li);
}

当我调试代码时,它似乎可以正确设置值,但我没有收到列表的实际输出。

2个回答

您选择的输入元素均没有类名。您也可以使用 document.getElementById 执行此操作。只需将 ID 添加到所有表单元素即可。

您的代码应如下所示。

function myFunction(list){
    var text = "";
    var inputs = document.querySelectorAll("input[type=text]");
    for (var i = 0; i < inputs.length; i++) {
        text += inputs[i].value;
    }
    var li = document.createElement("li");
    var node = document.createTextNode(text);
    li.appendChild(node);
    document.getElementById("list").appendChild(li);

>

http://jsfiddle.net/nb5h4o7o/3/

您的列表未被附加,因为您实际上并未创建元素。 replaceChild 应为 appendChild ,并且您应该使用 document.createElement 创建列表元素。

Richard Hamilton
2015-10-07

您的代码有很多问题,请查看 document.getElementById Node.replaceChild 文档。

我为您创建了一个版本,我们获取表单的所有 input 元素(使用 querySelectorAll ),然后我们使用 Array.prototype.map 将它们转换为 "<li>[value]</li>" ,然后 Array.prototype.join 将该数组转换为单个字符串。

document.querySelector('button').addEventListener('click', function(e) {
  var form = document.querySelector('form'),
      list = document.getElementById('list');
  
  list.innerHTML = [].map.call(form.querySelectorAll('input'), function(el) {
    return '<li>' + el.value + '</li>';
  }).join('');
});
<form>
  ID Number:
  <br>
  <input type="text" id="idNumber">
  <br>First name:
  <br>
  <input type="text" id="firstName">
  <br>Last name:
  <br>
  <input type="text" id="lastName">
</form>
<br>
<button type="submit">Submit</button>

<div id="container">
  <ul id="list"></ul>
</div>
Buzinas
2015-10-07