• 締切済み

getElementByIdの指定?

<SPAN>タグにIDを指定して、getElementByIDで呼び出して、<SPAN>タグが適用されているテキスト内容を書き換えたいのですが。 <SPAN>タグが同一フレーム内にあれば、 document.getElementById("idname").firstChild.nodeValue="書き換えるテキスト" で、変わるのですが。 書き換えたいIDを持つテキストが別のフレームにある場合、その指定方法がわかりません。 普通のフレーム指定なら、 documentで始める代わりに、parent.framename だと思ったので、やってみたのですが、どうもエラーが返ってきて動きません。 使っているブラウザはインターネットエクスプローラ5とネットスケープ6です。 どなたかわかる方、教えてください。 よろしくお願いします。

みんなの回答

  • zzzzzz
  • ベストアンサー率61% (70/113)
回答No.1

getElementByIdメソッドはdocumentオブジェクトの(正確にはHTMLDocumentインターフェースの)メソッドですから、 フレームを指定するparent.framenameにそのようなメソッドはありません。 この場合、 parent.framename.document.getElementById() とします。

bridgewood
質問者

お礼

お礼が遅くなり、申し訳ありません。 parent.framename.document.getElementById() として、 getElementById() の()にIDを入れれば、良いということですね? ありがとうございました。試してみます。

関連するQ&A

  • 3重のクォーテーション

      javascriptで function textChange(id,text){ document.getElementById(id).innerHTML=text; return document.getElementById(id).firstChild.nodeValue; }   と関数を作っておいて、 <span onClick="textChange('indication_space','★')">メールアドレス</span>   の★の部分に <script type="text/javascript" src="メールフォームのURL" charset="utf-8"></script>   という文字を入れたいのですがクォーテーションが重なっているためエラーが出ます。 ★内の「"」を「\'」とした場合、エラーは出ませんが何も表示されませんでした。 解決法をご存知の方いらっしゃいましたらぜひご教授ください。 よろしくおねがいします。

  • .getElementByIdでnameを拾う?

    javascriptで.getElementByIdでなぜかname属性を拾ってしまいます。 <script> function gets() { aa = document.getElementById('idid').innerHTML; bb=document.getElementById('idid').tagName; alert(aa+bb); } </script> <input type="submit" value="ボタン" name="idid" onclick="gets();"><span id="idid">ああああ</span> 上記は大分省略してえいますが、このようなコードで aaに「ああああ」が代入されず、bbに「INPUT」が代入されます。 通常ならアラーとは「ああああSPAN」のはずが「INPUT」になってしまいます。 どのような理由が考えられるでしょうか。 ちなみに、HTMLページはフレーム内で表示しています。

  • 折りたたみメニューについて

    現在あるサイトを作成中で、メニューに折りたたみ式のものを使っています。いろいろなサイトや書籍を参考に、メニューそのものはきちんと動いているのですが、メニューをクリックするたびに展開したサブメニューがまた閉じてしまい、ページ移動するたびにメニューを展開させるのは使い勝手が悪いなと感じております。 たとえばAというメニューを展開し、AAAというページへ移動した場合、展開されたAは展開したままにしたいのですが… なにかヒントでもつかめないかと検索を続けてみましたが、どうしても分からず困っています。 ソースを記述しますので、こう修正すればできるんじゃない?とか、こっちのソースを使ったらできるよ、とかありましたら教えていただけませんでしょうか? よろしくお願いします。 [Javascript] function oritatami(id,id2){ obj=(document.all)?document.all(id):((document.getElementById)?document.getElementById(id):null); if(obj) obj.style.display=(obj.style.display=="none")?"block":"none"; if(document.all){ with(document.all(id2)){innerText=(innerText=="▽")?"△":"▽";} } else if(document.getElementById){ with(document.getElementById(id2)){firstChild.nodeValue=(firstChild.nodeValue=="▽")?"△":"▽";} } } [HTML] <a href="URL" onclick="oritatami('mw00','+0');return false"><span id="+0">▽</span> メニュー1</a><br> <div class="d2" id="mw00" style="display:none;"> ┣メニュー2(メニュー1から展開)<br> ┃┣ 001<br> ┃┣ 004 - 007<br></div> </div>

  • メニューを変えたい

    こんにちは。メニューをつくったのですが、カテゴリーをクリックすると+がマイナスになり、サブカテゴリが現れ、サブカテゴリをクリックすると+に閉じてしまいます。 <script type="text/javascript"><!-- function oritatami(id,id2){ obj=(document.all)?document.all(id):((document.getElementById)?document.getElementById(id):null); if(obj) obj.style.display=(obj.style.display=="none")?"block":"none"; if(document.all){ with(document.all(id2)){innerText=(innerText=="+")?"-":"+";} } else if(document.getElementById){ with(document.getElementById(id2)){firstChild.nodeValue=(firstChild.nodeValue=="+")?"-":"+";} } } //--></script> これを下記の様に変更したいと思いますのでご教示お願い致します。 ●サブカテゴリをクリックしてもメインのカテゴリは閉じないで、マイナスのままで開いておき、閉じる時は又メインのマイナスのカテゴリをクリックすると全て閉じてプラスに戻る 説明が下手で申し訳ございませんが、理解して下さると助かります。

  • getElementByIdの戻り値がnullになります。

    getElementByIdでdivタグのオブジェクトを取得したいのですが、nullとなってしまいます。 以下のコードのどこがいけないのでしょうか。 --- <div id='a'></div> <script language="javascript">// <!-- var a_ = document.getElementById('a'); document.write(a_); // --></script> ---

  • onmouseで表示させたテキストを改行したい。

    いつもお世話になっております。 下記過去ログのソースを参考にしました。 「オンマウスで別の場所に画像とテキストを表示したい」 http://okwave.jp/qa1688069.html このソース(下記に抜粋)で動かす際、'変更する文章'を、たとえば5行表示したい場合、改行時に<br />を入れると、そのままタグが表示されて、改行されません。 ためしに\nやら\rなど改行コードを何個か試してみましたが、思うような結果は得られませんでした。 いくつかの文章を改行して表示させたい場合は、どのように書けばよいでしょうか。 よろしくお願いします。 上記リンク先の回答#4さんのソースの抜き出しここから----- <script type="text/javascript"> <!-- function textChange(id,text){ var span_el = document.getElementById(id); var originalText = span_el.firstChild.nodeValue; span_el.firstChild.nodeValue=text; return originalText; } //--> </script> </head> <body> <span onMouseOver="RestoreText=textChange('text1','変更する文章')" onmouseout="textChange('text1',RestoreText)">文章変更</span> <span id="text1">このへんに文章</span> 抜き出しここまで--(brは省略しました) やりたいこと-------------------- <span onMouseOver="RestoreText=textChange('text1','変更する文章1行目<br />変更する文章2行目<br />変更する文章3行目<br />変更する文章4行目<br />変更する文章5行目<br />')" onmouseout="textChange('text1',RestoreText)">文章変更</span> <span id="text1">このへんに文章(改行されて表示)</span>

  • PSPのWebブラウザで、動的にタグ入の文字を挿入するにはどうしたら良

    PSPのWebブラウザで、動的にタグ入の文字を挿入するにはどうしたら良いですか? <div id="aaa">ここを変える</div> function change(){ document.getElementById('aaa').innerHTML="<b>foo</b>"; } としても、<div>の中身が太文字のfooとならずに、<b>foo</b>となってしまいます。 <div id="aaa">ここを変える</div> function change(){ var aaa=document.getElementById("aaa"); aaa.firstChild.nodeValue='<b>foo</b>'; document.body.appendChild(aaa); } としても結果は同じでした。 これを太字で表示させる方法はありますか?

  • [javascript][DOM]getElementByIdやremoveChildの戻り値と処理の結果

    以前から気になっていたけれど聞かなかったこと。 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <head> <title>QFUMEI テストケース1</title> <script type="application/ecmascript"> function init(){ var hoge = document.getElementById("hoge"); var fuga = document.getElementById("fuga"); hoge.removeChild(fuga); alert(fuga); // [object HTMLParagraphElement] ← nullではない fuga = document.getElementById("fuga"); alert(fuga); // null } </script> </head> <body onload="init();"> <div id="hoge"> <p id="fuga">ほげ</p> </div> </body> </html> 結局 fuga = getElementById("fuga")によって 何が代入されているのでしょう? document上のp#fugaへの参照であれば removeChildの直後 fuga = nullとなっていてもよさそうだなと思っているのですが・・・・。 hoge.firstChild.nodeValueをいじるとp要素内の文字列が変化するし・・・・

  • cssでdisplay:noneを指定した時のプルダウンメニュー

    こんにちは、JavaScriptでプルダウンメニューを作ろうとして cssで予めdisplay:none;を指定したところ、 メニューがクリックしても開かなくなってしまいました。 html、css、JavaScriptの記述は以下の通りです。 html --------------------------------------- <span onclick="PullDown('term1')">クリック</span> <div id="term1"> <ul> <li>***********</li> <li>***********</li> </ul> </div> ----------------------------- css ------------------------------ div#term1 { display: none; } ------------------------------- JavaScript ------------------------------- function PullDown(id){ if(document.getElementById(id).style.display == 'none') document.getElementById(id).style.display=''; else document.getElementById(id).style.display='none'; } --------------------------------- cssの記述部分を無くすとちゃんと開いたり閉じたりと動作します。 また、 function Init(){ document.getElementById("term1").style.display="none"; } とJavaScriptで書いて、 bodyタグの所で <body onload="Init()">として呼び出してロード時に隠すようにするとちゃんと開閉してくれます。 cssでdisplay:none;と書くと動かなくなる理由と、 対策が分かる方居ましたら教えてください。

  • 自身の関数オブジェクトを参照するには?

    自身の関数オブジェクトを参照するには? 次のようなコードを書いてみました。(全角空白は半角インデントに置換してください) <p id="Target"><span><span><span><span><span><span>Hello, World!</span></span></span></span></span></span></p> <script type="text/javascript"> (function(){  function Hello(HTMLElement){   var firstChild = HTMLElement.firstChild;   var result;   switch(firstChild.nodeType){    case 1: // Element Node     result = Hello(firstChild); // 再帰呼び出し     break;    case 3: // Text Node     result = firstChild.nodeValue;     break;   }   return result;  }  var text = Hello(document.getElementById('Target'));  alert(text); // Hello, World! })(); </script> 再帰呼び出しの部分で "Hello" の文字列を使わない方法を模索しています。 # この場合、while を使えば再帰呼び出しを使わなくすることも出来ますが、実際のコードはかなり複雑で上手い方法を思いつきませんでした。 # 時間をかければ再帰呼び出しを使わないように修正することも出来るのでしょうが、今はさくっと再帰呼び出しで解決することを望んでいます。 具体的には、 result = this(firstChild); このように呼び出せるのが理想です。 (この場合のthis値は windowオブジェクト を参照するので、上記は期待通りに動作しません) this とオブジェクトを組み合わせる方法も考えましたが、肝心の "Hello" を省略できませんでした。 var obj = {}; obj.Hello = function(){ this.Hello(); }; 何か良い方法はないでしょうか?