Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript removeChild数组_Javascript_Html_Dom_Appendchild_Removechild - Fatal编程技术网

Javascript removeChild数组

Javascript removeChild数组,javascript,html,dom,appendchild,removechild,Javascript,Html,Dom,Appendchild,Removechild,这看起来很简单,但我就是不能让它工作。我可以添加DOM元素,但在使用数组时无法删除它们 <script language="javascript"> fields = 0; count = 0; function addInput() { if (fields != 10) { var htmlText = "<input type='search' value='' name='field[]' />"; var remButton = "

这看起来很简单,但我就是不能让它工作。我可以添加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>

字段=0;
计数=0;
函数addInput(){
如果(字段!=10){
var htmlText=“”;
var remButton=“”;
var newElement=document.createElement('div');
newElement.id='SomeID'+字段;
newElement.innerHTML=htmlText+remButton+newElement.id;
var fieldsArea=document.getElementById('text');
fieldsArea.appendChild(新元素);
字段+=1;
}否则{
...
}
计数++;
}
//需要这里的帮助吗
//您不需要循环,只需获取按钮id并删除整个“SomeID”
函数删除(){
fieldsArea=document.getElementById('text');

fieldsArea.removeChild(SomeID1);这个
removeChild
需要一个节点(DOM元素)作为参数

fieldsArea.removeChild(SomeID+count);
例如,您可以这样传递节点

fieldsArea.removeChild(document.getElementById('SomeID'+count));

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

'<input type="button" value="del" onclick="remove(this.parentNode)" />';
例如:

如果要删除已单击按钮的
div
,则必须将对相应
div
的引用传递给
remove
功能

'<input type="button" value="del" onclick="remove(this.parentNode)" />';
您可能还需要更新
字段
,但我不确定您的代码应该如何工作


如果要删除所有这些选项,必须循环:

for(;fields--;) {
   var element = document.getElementById('SomeID' + fields);
   element.parentNode.removeChild(element);
}

另外,请看一下。

谢谢!两个都试过了,但我就是无法让它工作。fieldsArea.removeChild(SomeID1)当然可以工作,但fieldsArea.removeChild(SomeID+count)不会(可能是因为它是一个字符串而不是DOM),我肯定还有什么地方做错了。@lixcab:
fieldsArea.removeChild(SomeID1)
无法工作,除非
SomeID1
是一个包含DOM元素的变量。两者都可以?只有第二个代码段可以工作(fieldsArea.removeChild(document.getElementById('SomeID'+count)):D..顺便说一句,您可以在上面做一个示例,这样我们就可以轻松地检查代码的错误;)谢谢Felix Kling-我现在正在尝试:)@lixcab:HTML中有一些错误(比如重复的结束体标记)。我修正了你的小提琴,让删除按钮正常工作。看看吧:你也不需要
count
变量。希望能有帮助!再次感谢!现在回顾一下!:)我是一个玩Javascript的白痴,而你不是。:)谢谢!@lixcab:不客气:)练习,练习,练习;)快乐的编码!
for(;fields--;) {
   var element = document.getElementById('SomeID' + fields);
   element.parentNode.removeChild(element);
}