如何使用 JavaScript 在 div 中插入多个元素?

Posted

技术标签:

【中文标题】如何使用 JavaScript 在 div 中插入多个元素?【英文标题】:How do I insert several elements in a div using JavaScript? 【发布时间】:2019-04-24 18:18:59 【问题描述】:

我尝试为我对 JS 非常陌生。以我的方式,新添加的字段不断删除以前的:

function add_input() 
  var s = document.getElementById('ref').value;
  var i = 0;
    while ( i < s) 
      document.getElementById('the_list').innerhtml =
        '<p><input type="text" name="holder_'+ i +'" /></p>';
        
        i++;
    
<input type="number" name="ref" id="ref" onchange="add_input();">
<div id="the_list"></div>

【问题讨论】:

在创建下一个 div 时要删除前一个 div 吗? 使用 appendChild 代替 innerHtml。 ***.com/questions/17650776/…的可能重复 阅读此MDN-appendChild 【参考方案1】:

使用 += 将新元素与之前的元素相加。

function add_input() 
        var s = document.getElementById('ref').value;
        var i = 0;
            while ( i < s) 
            console.log(s);
            document.getElementById('the_list').innerHTML +='<p><input type="text" name="holder_'+ i +'" ></p>';
                        i++;
            
    
<input type="number" name="ref" id="ref" onchange="add_input();">
<div id="the_list"></div>

【讨论】:

【参考方案2】:

要直接回答您的问题,您应该在向其中添加新 HTML 时使用 += 而不是 =,因为使用 = 会覆盖其中的现有子元素(删除它们)。

因此,通过使用+=,您只是在现有子元素之后追加而不是覆盖它们。

function add_input() 
  var s = document.getElementById('ref').value;
  var i = 0;
    while (i < s) 
      document.getElementById('the_list').innerHTML += '<p><input type="text" name="holder_'+ i +'" /></p>';
      i++;
    
<input type="number" name="ref" id="ref" onchange="add_input();">
<div id="the_list"></div>

更好的是,您应该直接使用 DOM 方法 appendChild 而不是添加原始 HTML:

function add_input() 
  var theList = document.getElementById('the_list');
  var s = document.getElementById('ref').value;
  var i = 0;
  var p;
  var input;
  while ( i < s) 
    p = document.createElement('p');
    input = document.createElement('input');
    input.setAttribute('type', 'text');
    input.setAttribute('name', 'holder_' + i);
    p.appendChild(input);
    theList.appendChild(p);
    i++;
  
<input type="number" name="ref" id="ref" onchange="add_input();">
<div id="the_list"></div>

【讨论】:

【参考方案3】:

实际上,在您的 while 代码中,您缺少 + 号,因为每次循环只添加一个元素,删除之前添加的输入字段。

只需像这样更新你的函数

 function add_input() 
        var s = document.getElementById('ref').value;
        document.getElementById('the_list').innerHTML = ""; // setting innerHTML of div to empty
        var i = 0;
            while ( i < s) 
            document.getElementById('the_list').innerHTML +='<p><input type="text" name="holder_'+ i +'" /></p>';
            //You are missing that + sign
                        i++;
            
    

【讨论】:

【参考方案4】:

这应该工作..

<script type="text/javascript">
    function add_input()
        var s = document.getElementById('ref').value;
        var i = 0;
            while ( i < s) 
              var ele = document.createElement("INPUT");
              ele.setAttribute("type", "text");
              ele.setAttribute("value", "Hello World!"); 
              ele.setAttribute("name", "holder_"+i); 
              document.getElementById('the_list').appendChild(ele);
              i++;
            
    
 </script>

【讨论】:

【参考方案5】:

试试这个

 function add_input() 
        
        $( "#the_list" ).empty();//if you want to delete previous elements otherwise remove this
        var s = document.getElementById('ref').value;
        var i = 0;
            while ( i < s) 
$('#the_list').append('<p><input type="text" name="holder_'+ i +'" /></p>');  
                        i++;
            
    
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="number" name="ref" id="ref" onchange="add_input();">
<div id="the_list"></div>

【讨论】:

以上是关于如何使用 JavaScript 在 div 中插入多个元素?的主要内容,如果未能解决你的问题,请参考以下文章

如何在使用 Javascript 在 div 中附加 html 时实现字符串插值

使用javascript在特定元素之后插入div的最佳方法[重复]

将 HTML 插入 div

通过 javascript 在 contenteditable div 上获取插入符号坐标。

重新插入div的位置

如何通过 JavaScript 插入 HTML 元素? [复制]