人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

【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の値を特定する方法をお願いします。

●質問者: irhnhhtn
●カテゴリ:ウェブ制作
✍キーワード:Class DOM JavaScript XPath ユニーク
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● ardarim
●35ポイント ベストアンサー

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 + "
");
◎質問者からの返答

値取得できました!

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


2 ● ardarim
●35ポイント

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


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


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ