这看起来很简单,但我就是不能让它工作。我可以添加DOM元素,但在使用数组时不能删除它们。
<script language="javascript">
fields = 0;
count = 0;
function addInput() {
if (fields != 10) {
var htmlText = "<input type='search' value='' name='field[]' />";
var remButton = "<input type='button' value='del' onclick='remove()' />";
var newElement = document.createElement('div');
newElement.id = 'SomeID'+fields;
newElement.innerHTML = htmlText + remButton + newElement.id;
var fieldsArea = document.getElementById('text');
fieldsArea.appendChild(newElement);
fields += 1;
} else {
...
}
count++;
}
// NEED HELP FROM HERE PLEASE
// You don't need to Loop, just get the button's id and remove that entire 'SomeID'
function remove() {
fieldsArea = document.getElementById('text');
fieldsArea.removeChild(SomeID1); <-----------------------THIS WORKS!
fieldsArea.removeChild(SomeID+count); <------------------THIS JUST WOULDN'T
count--;
}
</script>在remove函数中,编写SomeID1可以删除第一个添加的元素,但当我尝试使用“count”时,我就是无法删除“elements”。
任何帮助都将不胜感激。
谢谢!
发布于 2011-03-15 06:18:24
您必须首先获取对该元素的引用。当前您正在向函数传递一个未定义的变量SomeID。
例如:
var element = document.getElementById('SomeID' + fields);
// or starting by zero: var element = document.getElementById('SomeID0');
element.parentNode.removeChild(element);如果要删除单击了按钮的div,则必须将对相应div的引用传递给remove函数。
'<input type="button" value="del" onclick="remove(this.parentNode)" />';this将引用该按钮,并且由于它是div的子级,因此this.parentNode将引用该div。
您还必须更改您的函数以接受应该删除的元素:
function remove(element) {
element.parentNode.removeChild(element);
count--;
}您可能还需要更新fields,但我不确定您的代码应该如何工作。
如果你想把它们全部移除,你必须循环:
for(;fields--;) {
var element = document.getElementById('SomeID' + fields);
element.parentNode.removeChild(element);
}发布于 2011-03-15 06:18:20
removeChild需要一个节点(DOM元素)作为参数。在这种情况下
fieldsArea.removeChild(SomeID+count);例如,您可以这样传递节点
fieldsArea.removeChild(document.getElementById('SomeID'+count));https://stackoverflow.com/questions/5305236
复制相似问题