delicious! newsing! buzzurlにブックマーク! Yahoo!ブックマーク ライブドア - この記事をクリップ! このエントリーを含むはてなブックマーク

Javascriptの話。

2008/12/24 (Wed) at 4:22 pm

Javascriptの話。床屋にいくまで少し時間があるんで、ちと情けないヒトコマの自虐ネタ。

あるdivの中身のノードをぜんぶ消そうとおもって、removeChildを使って次のようにやったらうまくいかなくてこまったちゃん↓

e = document.getElementById('test');
if(e.hasChildNodes()){
	for(var i = 0; i < e.childNodes.length; i++){
		e.removeChild(e.firstChild);
	}
}

これは意図した通りに動かない。testの中に複数のオブジェクトが入ってるとぜんぶ消えない。こうするとうまくいくことに気づいた↓

e = document.getElementById('test');
if(e.hasChildNodes()){
	var num = e.childNodes.length; // <---- ココと
	for(var i = 0; i < num; i++){ // <---- ココがちがう!
		e.removeChild(e.firstChild);
	}
}

e.childNodes.lengthでノード数を取得できるけど、そのままforの中に入れるんじゃなくて、変数に代入してからだとうまくいく。でもなんで? わ、ワカランのう............

(30分熟考)

あ、、そ、そそううっかああああああああああああ!

こたえはアホみたいにかんたんでした。

removeChildするたんびにe.childNodes.lengthの値がひとつづつ減っていくのですね。だから要素が残ってしまうのだ。あーあー。バカだ。つかれちゃったよ。

delicious! newsing! buzzurlにブックマーク! Yahoo!ブックマーク ライブドア - この記事をクリップ! このエントリーを含むはてなブックマーク

コメント・プリーズ!

お名前 (your name)
(required)
url
(optional) ※公開されます。
メールアドレス (email)
(optional) ※公開されません。管理者にだけわかります。
コメント (comment)
(required)

※クッキーに保存すると次回から入力を省略できるので便利ですが、お使いのコンピュータに情報が残りますので、公共のパソコンなどからアクセスするような場合はチェックをはずしたほうがよいでしょう。

※コメント中のhtmlタグは実体参照に変換されます。たとえば、『<』は『&lt;』というかんじになりますのでhtmlタグをそのまま書き込んでくださってオッケーです。

one-px-ffffff-tl one-px-ffffff-tr one-px-ffffff-bl one-px-ffffff-br

PROFILEcaption

藤居ヒロヤ。ウェブデザイナー/ウェブディレクター。ウェブデザインオフィス、3OT NET主宰。名古屋市中区。「優しいデザイン」「激しいデザイン」「正しいデザイン」「セクシーなデザイン」「泣けるデザイン」「もっともなデザイン」... 。あなただけのウェブデザインを丹精込めておつくり致します。見積り依頼等、お気軽にお問い合わせ下さい。

お問い合わせフォーム

RECENT ENTRIEScaption

RECENT COMMENTScaption

TOOLScaption

BOOKMARKScaption

RESOURCEScaption

ARCHIVEcaption