○○.outerHTMLという構文の○○部について

[新着] Webテンプレートを仮オープンしました



0   名前: スミス : 2007/07/17(火) 20:44  ID:nGgGgg3k sub-Qo
【現在の状況】
ブラウザ上からsという変数を引っ張って以下のようなスクリプトを実行しようと思っています。
function RemoveChild(s) {
var obj = "book" + s;
obj.outerHTML = " ";
}
このとき、たとえばs=2として
・books2.outerHTML = " ";
と三行目を書き換えるとouterHTML自体は正常に動作するのですが
・obj.outerHTML = " ";
のままでは動かない状況です。

【どうしたいのか】
obj.outerHTML = " ";
のままでも動作するようにしたいです。

問題点が分かる方、御指摘お願いします。

1   名前: スミス : 2007/07/17(火) 20:44  ID:nGgGgg3k sub-Qo
すみません、一応動作する方法を自分で見つけました。

3行目を
document.getElementById(obj).outerHTML = " ";
と書き直すとよいみたいです。

浅薄にも急いでスレッド作成してしまいすみませんでした。

2   名前: 匿名 : 2007/07/17(火) 20:44  ID:Wn.FYATP sub-Cz
一応書いておく。

> var obj = "book" + s;
> obj.outerHTML = " ";

obj は文字列(String)なんだから、outerHTML なんてプロパティを持つはずがない。outerHTML を持つオブジェクトは HTMLElement なんだから、
var id = 'book' + s;
var element = document.getElementById (id);
element.outerHTML = '';

ついでに、こんなのはノードを引っこ抜けば済む話で、outerHTML で消去なんてのはダサいし危険。
function RemoveChild (s) {
    var element = document.getElementById ('book' + s);
    element.parentNode.removeChild (element);
}

どうせ IE 独自拡張を使うなら、removeNode の方がマシ。
function RemoveChild (s) {
    document.getElementById ('book' + s).removeNode (true);
}

一覧へ戻る