【Javascript】(DOM? XPath?)に関する質問です。


<html>
<div id="Unique1"><div id="NotUnique" >123</div></div>
<div id="Unique2"><div id="NotUnique" >456</div></div>
<div id="Unique3"><div id="NotUnique" >789</div></div>
</html>

ユニークなID(Unique1, Unique2, Unique3)の中に、全体で見るとユニークではないID(NotUnique)がある。
ただし、NotUniqueは、各ID(Unique1, Unique2, Unique3)の中ではNotUniqueはユニークである。

456と表示したいのですが、出来ません。
↓↓↓↓↓↓↓
var TargetDiv = document.getElementById("Unique2");
alert(TargetDiv.getElementById("NotUnique").innerHTML);

「IDを全てユニークにする」「item配列を使う」「classを使う」といったものではなく、
あくまでUnique2とNotUniqueの2つのIDを使って456の値を特定する方法をお願いします。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2006/08/25 13:33:46
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:ardarim No.1

回答回数897ベストアンサー獲得回数145

ポイント35pt

getElementById()は、documentオブジェクトを対象とするため、TargetDivに対してgetElementById()はできません。

TargetDivとその子ノードを別のdocumentに移してから、そのdocumentでgetElementById()をかけることで、そのdocument内でユニークにすることができます。


サンプルです。

var TargetDiv = document.getElementById("Unique3");
//document.write(TargetDiv.getElementById("NotUnique") + "
"); var newDoc; newDoc = document.createDocumentFragment(); //document.write(newDoc.firstSibling + "
"); //document.write(newDoc.documentElement + "
"); newDoc.appendChild(TargetDiv.cloneNode(true)); //document.write(newDoc.getElementById("NotUnique") + "
"); document.write(newDoc.getElementById("NotUnique").innerHTML + "
");
id:irhnhhtn

値取得できました!

ありがとうございました。

2006/08/25 13:27:34

その他の回答1件)

id:ardarim No.1

回答回数897ベストアンサー獲得回数145ここでベストアンサー

ポイント35pt

getElementById()は、documentオブジェクトを対象とするため、TargetDivに対してgetElementById()はできません。

TargetDivとその子ノードを別のdocumentに移してから、そのdocumentでgetElementById()をかけることで、そのdocument内でユニークにすることができます。


サンプルです。

var TargetDiv = document.getElementById("Unique3");
//document.write(TargetDiv.getElementById("NotUnique") + "
"); var newDoc; newDoc = document.createDocumentFragment(); //document.write(newDoc.firstSibling + "
"); //document.write(newDoc.documentElement + "
"); newDoc.appendChild(TargetDiv.cloneNode(true)); //document.write(newDoc.getElementById("NotUnique") + "
"); document.write(newDoc.getElementById("NotUnique").innerHTML + "
");
id:irhnhhtn

値取得できました!

ありがとうございました。

2006/08/25 13:27:34
id:ardarim No.2

回答回数897ベストアンサー獲得回数145

ポイント35pt

すみません、間違って編集途中で回答してしまいました...


var TargetDiv = document.getElementById("Unique2");
var newDoc;
newDoc = document.createDocumentFragment();
newDoc.appendChild(TargetDiv.cloneNode(true));
alert(newDoc.getElementById("NotUnique").innerHTML);
newDoc = null;

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません