電子書籍の厳選無料作品が豊富!

あるサンプルjavascriptを見ていて何をしているのかよく分からなかった箇所について教えてほしいと思います。

コードは下記になります。
親画面→子画面を呼び出して、子画面のボタンを押下すると親画面のメインフレームを更新します。
下記は子画面のボタン押下時のjavascriptに記述されています。

opener.parament.document.all.tags("frameset")[cnt-1].setAttribute("rows", "*,100%")
※ cntはframesetの数が設定されているようでした。
  フレームは4つあり、上下左右の構成です。

自分なりに調べた感じでは親画面の一番下のフレームの幅を変更するような記述にみえました。
ただ"*,100%"の記述が何を意味するのかがよくわかりません。幅といっても画面自体なのか、他のフレームとの幅の比率なのか・・・。

実際に色々値を変えて動かしてみたのですが、何が変わっているのかよくわかりませんでした。

もしよろしければどなたか教えて頂けないでしょうか。

A 回答 (2件)

cntはフレームの数ではなくframeset数じゃないかなと思いますが・・・


framesetというのは、各フレームを包括するタグです。
<frameset>
<frame src="frame1.html" name="frame1">
<frame src="frame2.html" name="frame2">
</frameset>
やじるしこんな感じですね。

つまり、opener.parament.document.all.tags("frameset")[cnt-1]は
開いたページの中にある最期のフレームセットではないかなと推測します。
[cnt-1]はインデックス番号です。インデックスは0からカウントされるので、HTML上一番最後に出現するframesetのインデックス番号は[framesetの数-1]になるわけです。

で、本題の.setAttribute("rows", "*,100%")についてですが、要はこのframeset[cnt-1]の属性「rows」に「*,100%」を設定するという意味です。
つまりこれがセットされたタグを書いてみると、上記のタグが

<frameset rows="*,100%">
<frame src="frame1.html" name="frame1">
<frame src="frame2.html" name="frame2">
</frameset>

と言うことです。
こう書いた場合、frame1とframe2は縦並びになり、1段目のframe1の高さは余った高さ分になり、frame2の高さは100%になることになります。これはframesetの基本的なHTMLの記述方法なのでHTMLのリファレンスなど見ればすぐに分かると思います。

ご参考まで。
    • good
    • 0
この回答へのお礼

お返事遅れてすみません。
なるほどフレームの数ではないのですね。とてもよくわかりました。
有難うございました。

お礼日時:2011/04/14 23:36

「*」はブラウザに計算させるような意味合いで、ウィンドウサイズと指定したサイズから決まってくる(残りの)サイズなどになります。


ご質問の例の場合は、rows属性の値を "*,100%" にしています。

詳しくは↓を
 http://w3g.jp/xhtml/dic/frameset
    • good
    • 0
この回答へのお礼

お返事遅れてすみません。
お答え有難うございます。サイトもあわせてみてみます。

お礼日時:2011/04/14 23:35

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