javascript - 如何使用 dom 删除文本字段

标签 javascript jsp dom

我有一个表单,允许用户在单击按钮时添加textfield 我想在每个添加的 textfield 下面添加允许删除它的链接

这是脚本

   <script>

function myFunction() {
      let wrapper = document.getElementById("dynamic-question");
      var input = document.createElement("input");
      var del = document.createElement("button");
      var div = document.createElement("div");
      del.className = "del"
      del.innerText = "X"

      div.appendChild(input)
      div.appendChild(del)
      div.appendChild(document.createElement("br"));
      div.appendChild(document.createElement("br"));
      wrapper.appendChild(div)
    }

    document.getElementById("dynamic-question").addEventListener("click",function(e) {
      if (e.target.className=="del") {
        e.target.closest("div").remove()
      }
    })
</script>

这里是 html 代码

<form id="myForm" method="POST" action="./gett">
<label for="question"> Question </label> <br>
<input class="champ" type="textarea" name="question" id="question" value=""><br><br>

<label for="ans"> Answers </label> <br>

<input type="text" name="ans1" id="ans1" value=""><br><br>

<input type="text" name="ans2" id="ans2" value=""><br><br>

    <div id="dynamic-question"></div> 

<button type="button" onclick="myFunction()">Add proposition</button> <br><br>

<input type="submit" value="submit">
</form>

最佳答案

  1. 添加时键入=按钮
  2. e.preventDefault() 在按钮上删除或也使 type=button
  3. 使用一个容器来容纳输入、BR 和删除,一次性将它们全部删除

然后调用remove

function myFunction() {
  let wrapper = document.getElementById("dynamic-question");
  var input = document.createElement("input");
  var del = document.createElement("button");
  var div = document.createElement("div");
  del.className = "del";
  del.innerText = "X";
  del.type="button";
  
  div.appendChild(input);
  div.appendChild(del);
  div.appendChild(document.createElement("br"));
  div.appendChild(document.createElement("br"));
  wrapper.appendChild(div);
}

document.getElementById("dynamic-question").addEventListener("click",function(e) {
  if (e.target.className=="del") {
    e.preventDefault();
    e.target.closest("div").remove();
  }
})
<button type="button" onclick="myFunction()">Add</button>
<div id="dynamic-question"></div>

像这样单独 - 所有最近的 sibling 都需要删除,包括 BR

function myFunction() {
  let wrapper = document.getElementById("dynamic-question");
  var input = document.createElement("input");
  var del = document.createElement("button");
  del.className = "del";
  del.type="buttpn"
  del.innerText = "X";
  
  wrapper.appendChild(input);
  wrapper.appendChild(del);
  wrapper.appendChild(document.createElement("br"));
  wrapper.appendChild(document.createElement("br"));
}

document.getElementById("dynamic-question").addEventListener("click",function(e) {
  if (e.target.className=="del") {
    e.preventDefault(); 
    e.target.previousElementSibling.remove(); // remove field
    e.target.nextElementSibling.remove(); // remove br
    e.target.nextElementSibling.remove(); // remove br
    e.target.remove();
  }
})
<button type="button" onclick="myFunction()">Add</button>
<div id="dynamic-question"></div>

关于javascript - 如何使用 dom 删除文本字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56151710/

相关文章:

javascript - jQuery getJSON 未定义错误

javascript - 如何将2个数组复制到1个数组中?

java - 我如何使用短信调用我的页面?

javascript - 测试光标是否在文本区域的第一行(使用软换行符)

javascript - 确定 ReactJS 中何时至少选中一个复选框

JavaScript 样式属性为空

javascript - 重置缩放不符合轴极值

javascript - AngularJS - ng-model 不适用于 Bootstrap 指令

java - 在没有查询字符串参数的情况下重建 URL

java - 如何在 JSF 中替换 JSP org.springframework.security 导入?