• ベストアンサー

渡された引数をインラインフレーム名として使うには

現在、以下のような関数を使って 任意のインラインフレーム内の任意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 の方はエラーなく処理できるようなのですが、 引数として渡した文字列を「フレーム名」として処理するにはどうすればよいのでしょうか? ご回答よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • leap_day
  • ベストアンサー率60% (338/561)
回答No.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でするかのどちらかです

ajrkmkrn
質問者

お礼

ご指摘の通りparentの使い方を間違えていました。 <a onclick~で関数を呼び出すときに、func('Frame1','ID1')ではなくfunc(Frame1,'ID1')とすれば良いということですね。 早速試してみます。 ご回答ありがとうございました。

その他の回答 (1)

回答No.1

よく分かりませんがiframeにもidを振ることを提案します。 document.getElementById(framename).document.getElementById(id).innerHTML=''; これではiframeの内側のinnerHTMLは取得できないですね。

ajrkmkrn
質問者

お礼

ご回答ありがとうございます。 分かりにくい拙文で大変申し訳ありませんでした。 iframeにもidを振るという方法もありますね。 参考にさせていただきます。