首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript removeChild数组

Javascript removeChild数组
EN

Stack Overflow用户
提问于 2011-03-15 06:13:18
回答 2查看 4.6K关注 0票数 0

这看起来很简单,但我就是不能让它工作。我可以添加DOM元素,但在使用数组时不能删除它们。

代码语言:javascript
复制
<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”。

任何帮助都将不胜感激。

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-03-15 06:18:24

您必须首先获取对该元素的引用。当前您正在向函数传递一个未定义的变量SomeID

例如:

代码语言:javascript
复制
var element = document.getElementById('SomeID' + fields);
// or starting by zero: var element = document.getElementById('SomeID0');
element.parentNode.removeChild(element);

如果要删除单击了按钮的div,则必须将对相应div的引用传递给remove函数。

代码语言:javascript
复制
'<input type="button" value="del" onclick="remove(this.parentNode)" />';

this将引用该按钮,并且由于它是div的子级,因此this.parentNode将引用该div

您还必须更改您的函数以接受应该删除的元素:

代码语言:javascript
复制
function remove(element) {
  element.parentNode.removeChild(element);   
  count--;
}

您可能还需要更新fields,但我不确定您的代码应该如何工作。

如果你想把它们全部移除,你必须循环:

代码语言:javascript
复制
for(;fields--;) {
   var element = document.getElementById('SomeID' + fields);
   element.parentNode.removeChild(element);
}

还可以看看documentation of removeChild

票数 1
EN

Stack Overflow用户

发布于 2011-03-15 06:18:20

removeChild需要一个节点(DOM元素)作为参数。在这种情况下

代码语言:javascript
复制
fieldsArea.removeChild(SomeID+count);

例如,您可以这样传递节点

代码语言:javascript
复制
fieldsArea.removeChild(document.getElementById('SomeID'+count));
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5305236

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档