0

以下のコードに問題があります。Opera でこのエラーが発生し続けます。

Uncaught exception: DOMException: NOT_FOUND_ERR

そして、これはChromeで:

Uncaught Error: NOT_FOUND_ERR: DOM Exception 8

このメッセージは、removeInput 関数を参照しています。

function addInput() {
  var div = document.createElement("div");
  var txt = "<div>Upload image: <input type='file' name='slika[]' /> <span onclick='removeInput(this.parentNode)' />Remove <img src='catalog/remove_icon.png' /></span></div>";
  div.innerHTML = txt;
  document.getElementById('text').appendChild(div);
}

function removeInput(el) {
  document.getElementById('text').removeChild(el);
}

質問: addInput 関数によって以前に作成された要素を削除する方法は? 要素を動的に削除するこれは正しい方法ですか?

4

2 に答える 2

1

el.parentNode.removeChild(el);

于 2013-04-20T20:53:49.283 に答える
0

最初に: <div>createElement は<div></div>デフォルトで " " を作成するため、innerHTML に " " を記述する必要はありません。

2番目の場合:最後に挿入された要素を削除する場合は、挿入後にグローバル変数に保存する必要があります

var lastInserted = null;
function addInput() {
  var div = document.createElement("div");
  var txt = "Upload image: <input type='file' name='slika[]' /> <span onclick='removeInput(this.parentNode)' />Remove <img src='catalog/remove_icon.png' /></span>";
  div.innerHTML = txt;
  document.getElementById('text').appendChild(div);
  lastInserted = div;
}

function removeInput() {
  if(!lastInserted)return;
  document.getElementById('text').removeChild(lastInserted);
}
于 2013-04-20T20:49:42.983 に答える