プロが教えるわが家の防犯対策術!

こんばんわ。
早速質問をお願いします。
下のようなhtml文があります。
//------------------------------------------------
<span id = 'ID'><IFRAME FRAMEBORDER='0' MARGINHEIGHT='0' MARGINWIDTH='0' SCROLLING='NO' HEIGHT='60' WIDTH='120' SRC='address'> <table border='0' height='60' width='120'><tr><td align='center' valign='middle'><a href='address' target='_blank'>リンクテキスト<img src='address' width='1' height='1' border='0' alt='' /></a></td></tr></table> </IFRAME></span>
//------------------------------------------------
<span>~</span>の間にある、aタグの [href='address']の値を取得
したいのですが上手く行きません。

var nodes = document.getElementById("ID");
var links = nodes.getElementsByTagName("a");

で<span>~</span>内のAタグリストにして、そこから

var href = links[0].getAttribute("href");

で取れるかなと思ったのですが、どうもgetElementsの部分からして
違うらしくて。
要素の子を頭から順にたどって行けば、一応値は取れると思いますが、
階層の深さ常にが一定とは限らない為、それはしたくありません。

こういった場合、どうするのが一般的なのでしょうか?
宜しければアドバイスをお願い致します。

A 回答 (2件)

iframe 要素を使っていなければ maru_n さんの JavaScript コードで期待通りの動作をするはずです。



今回の例の場合、iframe 要素を使っているというところにちょっと問題があります。 iframe 要素の中身は 「iframe 要素をサポートしていない UA において表示され」 ます。 逆に言うと、iframe 要素をサポートしている UA では iframe 要素の中身は全くレンダリングされないということになります。
そのため、iframe 要素をサポートしている UA では、ID = "ID" の span 要素の子孫は iframe 要素のみになり、a 要素はないことになってしまいます。 ゆえに getElementsByTagName メソッドで a 要素を取得しようとしても取得できないのです。

以上が原因です。
そんなわけで解決は難しいと思うのですが、そもそも表示されもしない iframe 要素の子孫要素を取得する必要はあるのでしょうか? そこから設計を見直したほうがいいような気がします。
    • good
    • 0
この回答へのお礼

なるほどなるほど。
iframeはそういった働きをするものなのですね。
正常にレンダリングされた後では、iframe内のタグは無いものに
されてしまうと。

よく理解できました。ありがとうございます。

お礼日時:2009/08/25 15:45

alert(document.getElementById('ID').innerHTML.match(/.+<?\shref=['|"](.*?)['|"].*/)[1]);



^^;
    • good
    • 0
この回答へのお礼

innerHTML.match・・・こういうやり方があるもあるんですね。^^;
1の方のアドバイス後に、チャチャっと設計を改変してしまいました
ので、試せしてはいないのですが、これは便利そうですので覚えておきます。ありがとうございました。

お礼日時:2009/08/25 15:50

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!