- ベストアンサー
渡された引数をインラインフレーム名として使うには
現在、以下のような関数を使って 任意のインラインフレーム内の任意ID部分のHTMLを改変するスクリプトを作っています。 <script> function func(framename,id) { parent.framename.document.getElementById(id).innerHTML=''; } </script> <body> <a href=# onclick="func('Frame1','ID1')">Frame1のID1を改変</a> <iframe name="Frame1" src="javascript:document.write('<div id=ID1><p>ID1</p></div>')"></iframe> </body> つまり、インラインフレームの name と div要素の id を引数として関数に渡しているのですが、 上記のように書くと「parent.framename.document は Null またはオブジェクトではありません」とエラーが出てしまいます。 id の方はエラーなく処理できるようなのですが、 引数として渡した文字列を「フレーム名」として処理するにはどうすればよいのでしょうか? ご回答よろしくお願い致します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは parentは子ページから親ページもしくは別の子ページに対して使うものです 親ページから子ページにはdocument.フレームnameかそのままフレームnameを使用します あとそのままframenameを使うと'Frame1'.document~~となるのでエラーになります 以下のようにしてください <script language="javascript"> <!-- function func(framename,id) { framename.document.getElementById(id).innerHTML = ""; } //--> </script> <a href=# onclick="func(Frame1,'ID1')">Frame1のID1を改変</a> もしくはNo.1様のようにidでするかのどちらかです
その他の回答 (1)
- shirayukix
- ベストアンサー率43% (90/207)
よく分かりませんがiframeにもidを振ることを提案します。 document.getElementById(framename).document.getElementById(id).innerHTML=''; これではiframeの内側のinnerHTMLは取得できないですね。
お礼
ご回答ありがとうございます。 分かりにくい拙文で大変申し訳ありませんでした。 iframeにもidを振るという方法もありますね。 参考にさせていただきます。
お礼
ご指摘の通りparentの使い方を間違えていました。 <a onclick~で関数を呼び出すときに、func('Frame1','ID1')ではなくfunc(Frame1,'ID1')とすれば良いということですね。 早速試してみます。 ご回答ありがとうございました。