0

これは十分に単純に見えますが、私はそれを機能させることができません。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」を削除できません。

どんな助けでも大歓迎です。

ありがとうございました!

4

2 に答える 2

1

removeChildパラメータとしてノード(DOM要素)が必要です。この場合

fieldsArea.removeChild(SomeID+count);

たとえば、この方法でノードを渡すことができます

fieldsArea.removeChild(document.getElementById('SomeID'+count));
于 2011-03-14T22:18:20.370 に答える
1

最初に要素への参照を取得する必要があります。現在、未定義の変数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ボタンを参照し、の子であるため、それを参照divthis.parentNodeますdiv

また、削除する必要のある要素を受け入れるように関数を変更する必要があります。

function remove(element) {
  element.parentNode.removeChild(element);   
  count--;
}

おそらく更新する必要もありfieldsますが、コードがどのように機能するのかわかりません。


それらをすべて削除したい場合は、ループする必要があります。

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

のドキュメントもremoveChildご覧ください。

于 2011-03-14T22:18:24.470 に答える