みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

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

ご回答よろしくお願い致します。

投稿日時 - 2007-08-12 15:15:05

QNo.3249141

暇なときに回答ください

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

こんにちは

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でするかのどちらかです

投稿日時 - 2007-08-13 02:33:39

お礼

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

投稿日時 - 2007-08-13 17:19:43

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

よく分かりませんがiframeにもidを振ることを提案します。

document.getElementById(framename).document.getElementById(id).innerHTML='';
これではiframeの内側のinnerHTMLは取得できないですね。

投稿日時 - 2007-08-12 15:55:01

お礼

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

投稿日時 - 2007-08-13 17:15:10

あなたにオススメの質問