0

私はeventlistener onclickで4つのdivを持ち、次のことを行うjs関数を呼び出します:

this.parentNode.removeChild(this);

クリックしたdivが削除されることを期待していますが、そうではありません。代わりに、最後の子を削除し、その後に指定された id を削除された子の id に変更し (最初のクリック、最後の子)、さらに他の div をクリックすると、指定された id が 1 にカウントダウンされます。配列内の childNodes を最後から最初に削除します。

たとえば、多くのバリアントを試しました

document.getElementById('parentElementName').removeChild(this.gettAttribute('id'));

また

parent =document.getElementById('parentElementName');

to_be_removed = document.getElementById(this.gettAttribute('id');

parent.removeChild(to_be_removed);

または childNodes // id = 1,2,3,4

to_be_removed =document.getElementById('box_content').childNodes[this.getAttribute('id')];

parent =document.getElementById('box_content');
    parent.removeChild(to_be_removed);

奇妙な私は可視性または背景色を正常に変更できます:

document.getElementById('box_content').childNodes[this.getAttribute('id')].style.visibility='hidden';

また

4

2 に答える 2

1

意図したものをリメイクできました。http://jsfiddle.net/6YHcv/にアクセスして確認してください。これはあなたが必要としていたものですか?

IE を使用していて を使用している場合attachEventthisイベント ハンドラーでは、要素ではなくグローバル オブジェクトを参照する可能性があります。そうしないと、コードが機能しない理由がわかりません。

于 2011-08-14T18:16:11.070 に答える
0

コードにいくつかのタイプミスがあります。あなたの2番目の例はうまくいくはずです(コメントを参照):

// make sure this is the parent element's ID and not the name, as this suggests.
    parent = document.getElementById('parentElementName'); 

//note the double 't' in getAttribute; also, you are missing an end bracket
    to_be_removed = document.getElementById(this.gettAttribute('id'); 

//looks good
    parent.removeChild(to_be_removed);

ただし、この例も確認してください

this.parentNode.removeChild(this)onclick ハンドラーの後に関数を呼び出すのと同じくらい簡単なはずです。

于 2011-08-14T18:59:03.460 に答える