如何通过 Javascript 动态删除表单元素?

How can dynamically remove element of form by Javascript?

我使用 Javascript 创建了一个包含动态元素的表单。 我可以添加元素,但如何从表单中删除它们? 我无法解决问题。我很困惑! :(

我的代码:

<script type="text/javascript">
//+Element
function addElement(div) {
  var ni = document.getElementById(div);
  var numi = document.getElementById('numVal');
  var num = (document.getElementById('numVal').value -1)+ 2;
  numi.value = num;
  var newdiv = document.createElement('div');
  newdiv.setAttribute('id',num);
  var unum="'"+div+"','"+num+"'";
  newdiv.innerHTML ='<input id="t" type="tel" placeholder="Tel.'+num+'" name="t'+num+1+'"><img id="del" onClick="removeElement('+unum+');" alt="del" src="images/del.gif" />';
  ni.appendChild(newdiv);
}
//-Element
function removeElement(divNum,div) {
  var d = document.getElementById(div);
  var olddiv = document.getElementById(divNum);
  d.removeChild(olddiv);
}
</script>

    <form>
    <input type="hidden" value="0" id="numVal" />
    <div id="m">
        <div id="h125">
            <div class="fb">
                <input id="t" type="tel" placeholder="Tel.">
                <img id="add" Alt="add" src="images/add.gif" onclick="addElement('h125');" />
            </div>
        </div>
    </div>
    </form>

document.getElementsById(divNum); 应该读作:document.getElementById(divNum);

您需要删除元素后的 's'。 更新 对不起,我没有测试才回答。当你在你的 addElement(div) 函数中声明 var unum 时,你的变量名是倒过来的。它应该读作 var unum="'"+num+"','"+div+"'";

这就是您要实现的目标吗?如果是这样,当您在 removeElement 函数中混淆 ids 时。

//+Element
function addElement(div) {
  var ni = document.getElementById(div);
  var numi = document.getElementById('numVal');
  var num = (document.getElementById('numVal').value -1)+ 2;
  numi.value = num;
  var newdiv = document.createElement('div');
  newdiv.setAttribute('id',num);
  var unum="'"+div+"','"+num+"'";
  newdiv.innerHTML ='<input id="t" type="tel" placeholder="Tel.'+num+'" name="t'+num+1+'"><img id="del" onClick="removeElement('+unum+');" alt="del" src="images/del.gif" />';
  ni.appendChild(newdiv);
}
//-Element
function removeElement(divNum,div) {
  var d = document.getElementById(divNum);
  var olddiv = document.getElementById(div);
  d.removeChild(olddiv);
}
<form>
    <input type="hidden" value="0" id="numVal" />
    <div id="m">
        <div id="h125">
            <div class="fb">
                <input id="t" type="tel" placeholder="Tel.">
                <img id="add" Alt="add" src="images/add.gif" onclick="addElement('h125');" />
            </div>
        </div>
    </div>
    </form>