【问题标题】:Repeating a div based on user input (JavaScript solution preferred)根据用户输入重复 div(首选 JavaScript 解决方案)
【发布时间】:2021-04-23 14:05:52
【问题描述】:

寻找以下问题的最简单实现:

我有一个用户输入数字字段,例如:

<input type="number" id="numInput" name="numInput" value="1" onchange="myFunc()">

<div id="demo">*** TEST ***</div>

我想根据用户输入的#numInput 值复制#demo div,例如如果用户输入“5”,页面上将显示五个#demo div。目前,我正在使用以下功能:

function myFunc() {
  var newArray = [];
  var numInput = document.getElementById('numInput').value;
  var x = document.getElementById('demo').innerHTML;

  for(var i=0; i<numInput; i++) {
    newArray.push(x);
  }

  document.getElementById('demo').innerHTML = newArray;
}

但这是添加到现有数组中,而不是根据用户输入输出 div 的确切数量。请指教。谢谢。

【问题讨论】:

    标签: javascript html


    【解决方案1】:

    不应有多个相同的 id 值。

    function myFunc() {
      let numInput = document.getElementById("numInput");
      while (numInput.nextSibling) {
        numInput.nextSibling.remove();
      }
      
      let numInputval = document.getElementById('numInput').value;
      for(var i=numInputval; i>0; i--) {
        var newDiv = document.createElement('div');
        newDiv.setAttribute('id', 'demo' + i);
        newDiv.innerHTML = '*** TEST ***';
        numInput.parentNode.insertBefore(newDiv, numInput.nextSibling);
      }
    }
    &lt;input type="number" id="numInput" name="numInput" onchange="myFunc()"&gt;

    +编辑 您还可以使用 javascript 操作 &lt;form&gt;

    function myFunc() {
      let numInput = document.getElementById("numInput");
      while (numInput.nextSibling) {
        numInput.nextSibling.remove();
      }
      
      let numInputval = document.getElementById('numInput').value;
      for(var i=numInputval; i>0; i--) {
        var newInput = document.createElement('input');
        newInput.setAttribute('id', 'demoInput' + i);
        newInput.setAttribute('type', 'text');
        newInput.setAttribute('name', 'demoInputName' + i);
        newInput.setAttribute('onchange', 'myFormChangeListener(this)');
        numInput.parentNode.insertBefore(newInput, numInput.nextSibling);
        numInput.parentNode.insertBefore(document.createElement('br'), numInput.nextSibling);
      }
    }
    
    function myFormChangeListener(element) {
      console.log(element);
      console.log(element.value);
      myForm.action = 'http://the.url/';
      myForm.method = 'post';
      console.log(myForm);
      //myForm.submit;
    }
    <form id="myForm">
      <input type="number" id="numInput" name="numInput" onchange="myFunc()">
    </form>

    【讨论】:

    • 谢谢,这很有帮助。扩展上面的示例,假设输入是表单提交的一部分,关于如何将这些输入捕获为 PHP POST 请求的任何建议?当只有输入字段时,我可以记录 POST 请求,但是当输入字段的数量根据用户输入动态变化时,我不确定如何捕获结果输入。提前致谢。
    • @moin205 你能看一下编辑后的内容吗?
    • 谢谢!关于我上面的评论,我能够在 PHP(不需要 JS)中实现解决方案。
    猜你喜欢
    • 1970-01-01
    • 2011-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多