我对JavaScript经验不足,经过大量搜索和审核其他主题后,我很难搞清楚如何动态删除网页中的字段。与我的用例类似的方式(或者更可能的是,我只是没有得到!)。
我的理解是,在不引用父节点的情况下,不能从DOM中删除元素。但是,在使用removeChild()时,我不完全确定我应该在我的代码中引用什么作为父节点。我怀疑它是我的HTML中的东西;如果有人能指出我正确的方向,那就太好了。
HTML<div>
中的 <body>
<div class="wrapper">
<div class="sidebar" text-align="center">
myFormFieldLabel <button onclick="myFunction()">add</button></p>
</div>
<div class="main" text-align="center">
<form name="myForm" action="/" method="POST">
some text goes here.
</br>
<hr>
</br>
<div class="fields" id="rf1">
<!--added form fields will appear here-->
</div></p>
</div>
<div class="submit">
<input type="submit" value="Submit" />
</form>
</div>
</div>
动态创建字段的JavaScript:
function myFunction(){
var r = document.createElement('span');
var y = document.createElement("INPUT")
var p = document.createElement('p');
var g = document.createElement("IMG");
y.setAttribute("type", "text");
y.setAttribute("placeholder", "myFormField");
g.setAttribute("src", "delete.png");
g.setAttribute("onclick", //should remove entire form input field(span)//);
increment();
y.setAttribute("Name", "myField" + "~input_" + i);
r.appendChild(y);
r.appendChild(g);
r.appendChild(p);
document.getElementById("rf1").appendChild(r);
}
通常我在调整代码时遇到的错误是Uncaught TypeError: Cannot read property 'removeChild' of null
答案 0 :(得分:2)
要从文档中删除节点,首先应该从JavaScript代码中为其提供ID。这将使以后以编程方式更容易删除。
例如:
var r = document.createElement("span");
r.id = "myID";
var y = document.createElement("INPUT")
var p = document.createElement('p');
var g = document.createElement("IMG");
...
// Later
var p = document.getElementById("myID");
p.parentNode.removeChild(p);