+ JavaScript の質問用スレッド vol.33 +

このエントリーをはてなブックマークに追加
938Name_Not_Found
タグの中身ではなく、特定のタグ自体を消すことってできますか?
例えば、DIVのidがbのタグだけ消すとか。

<div id="a">foo<div id="b">baa</div></div>

<div id="a">foobaa</div>
939Name_Not_Found:05/02/04 14:41:42 ID:???
target = document.getElementById("b");
target.parentNode.removeChild(target);
940Name_Not_Found:05/02/04 14:44:11 ID:???
それじゃ要素が消える
941Name_Not_Found:05/02/04 14:45:26 ID:???
>>938
そんなタグなら消すというより<!で置き換えておしまい!
942Name_Not_Found:05/02/04 14:46:21 ID:???
>>938
var x = document.getElementById('b');
x.parentNode.replaceChild(x.firstChild, x);
943938:05/02/04 14:46:36 ID:oWbIbRHf
>939
レスありがとうございます。
removeChildだと<div id="a">foo</div>になりますよね?
そうではなく、<div id="a">foobaa</div>としたいっす。

つうか、baaってなんだ。。。barだろうがorz
944Name_Not_Found:05/02/04 14:48:11 ID:???
target = document.getElementById("b");
string = target.childNodes[0].cloneNode();
myParent = target.parentNode;
myParent.insertBefore(string,target);
myParent.removeChild(target);

こんなかんじ?
945839:05/02/04 14:50:29 ID:???
あー、すまん、読み間違えてた。
それじゃ
var target = document.getElementById("b");
var content = document.createDocumentFragment();
while (target.hasChildNodes()) {
 content.appendChild(target.firstChild);
}
target.parentElement.replaceChild(content, target);
だな。
946839:05/02/04 14:52:39 ID:???
さらに訂正。>>945の最後の行はparentElementではなくparentNodeだな。IEならどっちでも動くが。
まあ他の人もいろいろ書いてるし好きなようにしてくれや。
947939:05/02/04 14:53:45 ID:???
恥ずかしい…… レス番号100もずれてた……
948938:05/02/04 15:05:51 ID:???
>944
SUGEEE。
消したいタグの中に子供がいたときを考慮して
こんな感じで逝きたいと思います。

target = document.getElementById("b");
myParent = target.parentNode;
myParent.insertBefore(document.createTextNode(target.innerHTML),target);
myParent.removeChild(target);
949Name_Not_Found:05/02/04 15:07:15 ID:???
>>938
/*@cc_on @if (@_jscript) b.removeNode(); @else@*/ 省略 /*@end@*/
950Name_Not_Found:05/02/04 15:16:39 ID:???
>>948 おしい。
3行目: while (myParent.hasChildNodes()) myParent.insertBefore( target.firstChild, target);
951939:05/02/04 15:23:27 ID:+A/mn2Oi
>>950 さらにおしい。
3行目: while (target.hasChildNodes()) myParent.insertBefore( target.firstChild, target);