OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

サブウィンドウの動きを制御したい!

  • 困ってます
  • 質問No.210311
  • 閲覧数122
  • ありがとう数1
  • 気になる数0
  • 回答数1
  • コメント数0

お礼率 93% (15/16)

親ウインドウのボタンをクリックすると、
サイズ400×300のサブウィンドウがモニタ画面の左上(0,0)にオープンするようにしました。
このサブウィンドウは、モニタ画面に現れると同時に、
まずは、ツツーッと下にすべってタテ位置のみモニタ画面中央に行き、
行き着いたところで今度は、右方向にツツーッと滑って、
最後にはモニタ画面のど真ん中に配置されるようにしたかったのです。

そこで、サブウィンドウ内には、以下のスクリプト(onload)を書きました。

<script language="javascript">
<!--
var disW= screen.availWidth;
var disH= screen.availHeight;
var cX=disW/2-200;
var cY=disH/2-150;
var pX=0;
var pY=0;
var timerID;
function moveWin(){
if(pY < cY){
pY+=5;
window.moveTo(0,pY);
timerID=setTimeout("moveWin()",1);
}
if(pY==cY){
pX+=5;
window.moveTo(pX,cY);
timerID=setTimeout("moveWin()",1);
}
else{
clearTimeout(timerID);
}
}
//-->
</script>

でも、うまくいきません。

ふたつめのifがいけないのでしょうが、
未熟なためどうしてなのかわかりません。

どなたか、教えてください!
よろしくおねがいします。
通報する
  • 回答数1
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.1
レベル14

ベストアンサー率 24% (612/2465)

まず、2つ目のif文にelseをつけないと、最後のelseが有効になってしまい、setTimeoutがキャンセルされます。
その次に、pY==cYになることはありませんのでpY>=cYで判定するか、pY==cYになるように作り変える必要があります。
また、こう換えると右へスライドしたウィンドウを停めるところがありませんので、最後のelseはX軸を停める必要があります。
書き換えると以下のようになりました。
----
<script language="javascript">
<!--
var disW= screen.availWidth;
var disH= screen.availHeight;
var cX=disW/2-200;
var cY=disH/2-150;
var pX=0;
var pY=0;
var timerID;
function moveWin(){
if(pY < cY){
pY+=5;
window.moveTo(0,pY);
timerID=setTimeout("moveWin()",1);
}
else if(pY>=cY){
pX+=5;
window.moveTo(pX,cY);
timerID=setTimeout("moveWin()",1);
if(pX>=cX) {
clearTimeout(timerID);
}
}
}
//-->
</script>
お礼コメント
omokawa

お礼率 93% (15/16)

madmanさんへ
簡潔で完璧なご回答でした。
本当にありがとうございました。
投稿日時 - 2002-02-02 21:08:14
-PR-
-PR-
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ