代码之家  ›  专栏  ›  技术社区  ›  kowsikbabu

如何使用js在html中添加n个输入字段

  •  0
  • kowsikbabu  · 技术社区  · 8 年前

    我必须从用户那里获取“n”个名称的总数,然后创建n个字段来获取所有名称。我现在写的是:

    HTML代码:

    <form action="/flight_ticket/book" name="myform" method="post">
      .
      .
      .
      Enter the number of tickets to be booked:
      <input name="nooftickets" type="text"><br/><br/>
      <a href="#" id="names" onclick="addFields();">Enter names</a>
      <div id='container'/>
      </div>
      <br/><br/>
    </form>
    </body>
    

    JS代码:

    function addFields(){
        var number = parseInt(document.getElementById("nooftickets").value);
        var container = document.getElementById("container");
        while (container.hasChildNodes()) {
          container.removeChild(container.lastChild);
        }
        for (i=0;i<number;i++){
          container.appendChild(document.createTextNode("Name " + (i+1)));
          var input = document.createElement("input");
          input.type = "text";
          input.name = "name" + i;
          //input.required= true;
          container.appendChild(input);
          container.appendChild(document.createElement("br"));
        }
    }
    

    但当我在浏览器上运行它时,在点击“输入名称”之后,我在浏览器中看不到任何更改! 我怎么了?

    2 回复  |  直到 8 年前
        1
  •  1
  •   vikscool    8 年前

    你所做的是试图获取 noofticktes 它被定义为 name 在html中,但是在代码中,您使用 document.getElementById('noofticktes').value 它正在抛出一个 undefined 错误,因为没有 id 定义为 诺夫铁克斯 . 所以,只需从以下位置更改代码:

    var number = document.getElementById("nooftickets").value;
    

    对此:

    var number = document.getElementsByName("nooftickets")[0].value;
    

    你将能够使你的代码工作。

    如果您试图清除/删除元素的所有内容,代码中的一个小更新就是 container 只使用 container.innerHTML='' 而不是循环和移除每个元素。

    这是更新的代码片段。

    function addFields() {
      debugger;
      var number = document.getElementsByName("nooftickets")[0].value;
      var container = document.getElementById("container");
      container.innerHTML = '';
      for (i = 0; i < number; i++) {
        container.appendChild(document.createTextNode("Name " + (i + 1)));
        var input = document.createElement("input");
        input.type = "text";
        input.name = "name" + i;
        //input.required= true;
        container.appendChild(input);
        container.appendChild(document.createElement("br"));
      }
    }
    <form action="/flight_ticket/book" name="myform" method="post">
      . . . Enter the number of tickets to be booked:
      <input name="nooftickets" type="text"><br/><br/>
      <a href="#" id="names" onclick="addFields();">Enter names</a>
      <div id='container' />
      </div>
      <br/><br/>
    </form>
        2
  •  0
  •   Aman Sharma    8 年前

    function addFields() {
    		// body...
    		var input = '';
    		var number = document.getElementById('number').value;
    		for(var i=0;i<number;i++)
    		{
    			input +="<input id='number"+i+"' name='number"+i+"'><br>";
    		}
    		document.getElementById('container').innerHTML = input;
    		
    	}
    <form action="/flight_ticket/book" name="myform" method="post">
      
      Enter the number of tickets to be booked:
      <input name="nooftickets" id="number" type="text"><br/><br/>
      <a href="#" id="names" onclick="addFields();">Enter names</a>
      <div id='container'/>
      </div>
      <br/><br/>
    </form>