インラインフレーム内を2つのボタンでスクロールさせたいのですが…

[統計] HTMLからXHTMLへの移行を進めていますか?



0   名前: 43K : 2007/05/21(月) 11:53  ID:0BuJaUWj sub-.G
大きく分けて2つのボタンA・Bによって、インラインフレーム内をスクロールさせたいと考えています。
ボタンAはインラインフレーム内にあり、もうひとつのボタンBはインラインフレームの親フレーム内にあります。

現状、それぞれのボタンにjavascriptを記述しているのですが、それぞれのボタンに互換性が無く、
例えばA1ボタンで(50,0)までスクロールさせた後、B1ボタンを押すと(0,0)の画面に戻りその後(100,0)まで動き、
さらにA2ボタンを押すと(100,0)から(50,0)の画面へと変わり(100,0)まで移動します。

A1ボタンは(50,0)へ動かすボタンとして、A2ボタンは(100,0)へ動かすボタンとして、A3ボタン(150,0)へ動かすボタンとして…
B1ボタンは(100,0)へ動かすボタンとして、B2ボタン(150,0)へ動かすボタンとして…設定しているつもりです。
本来は、A1ボタンで(50,0)と移動した後、B1ボタンを押すとそこから(100,0)までスクロールさせたいと考えています。
どのようにしたら解消されるのかが分からず、困っています。

現状、両方とものボタンに下記ようにjavascriptを設定しています。

var defo=0;
var time = 40;
var move = 10;
var max,max_point;
function sc(max) {
max_point = max;
if (defo < max){
defo += move;
top.blFrame.scroll(defo,0);
timer = setTimeout("sc(max_point)",time);
}else if (defo > max){
defo -= move;
top.blFrame.scroll(defo,0);
timer = setTimeout("sc(max_point)",time);
}else {
clearTimeout(timer);
}
}

つたない説明ですみませんがどのように直すとよいか、どなたかお教えいただけないでしょうか?
よろしくお願い致します。

1   名前: 匿名 : 2007/05/21(月) 11:53  ID:TolMYOJL sub-Cz
> var defo=0;
> top.blFrame.scroll(defo,0);

常に 0 からスタートするように書かれているから。

関数 sc を呼び出す前に、現在のスクロール量を取得して、変数 defo(変な名前…)に代入しておく。スクロール量を得る方法は探せば出てくるだろうけど、念のため:

・IE 以外ほぼ全て:top.frames['blFrame'].pageYOffset
・IE 標準モード:top.frames['blFrame'].documentElement.scrollTop
・IE 互換モード:top.frames['blFrame'].document.body.scrollTop

# この性質上、IE の場合は同一ドメイン上にあるファイルでないといけない。

あとはまあ、できるだけグローバル変数を使わないように改良してみて下さい。

2   名前: 43K : 2007/05/21(月) 11:53  ID:0BuJaUWj sub-.G
ありがとうございます!

参考に直してみたいと思います。

一覧へ戻る