• ベストアンサー
  • すぐに回答を!

イベントが初めの一回しか起きません

  • 質問No.58402
  • 閲覧数161
  • ありがとう数4
  • 回答数2

お礼率 100% (2/2)

JavaScriptを勉強し始めて何とか自分のホームページに使いたいのですが、以下のプログラムをonClickイベントハンドラで動かせたいのですが、初めの一回のみ動き、その後クリックしても動きません。やはり作り直した方がいいのでしょうか。

var timerID; var ichi = 68; var maxX = 120; var perX = 2; speed = 10;

function layerMv(){
if(ichi<maxX) {
ichi += perX;
if(document.all){
var data = document.all('S1').style;
data.visibility = "visible";
data.left = ichi;
}
if(document.layers){
var data = document.layers['S1'];
data.visibility = "visible";
data.left = ichi;
}
timerID = setTimeout("startMv()",speed);
}else if(ichi==maxX){
clearTimeout(timerID);
}
}

他のボタンonMouseoverで初期位置(68,y)に通常のレイヤー移動。
その後動かなくなります。
どうかよろしくお願いします。

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

  • 回答No.2
  • ベストアンサー

ベストアンサー率 33% (7/21)

>timerID = setTimeout("startMv()",speed);
ここの部分が、正しくは
timerID = setTimeout("layerMv()",speed);
ではないでしょうか?

参考までにスクリプトを作ってみました。
var timerID = 0;
var ichi = 68;
var maxX = 120;
var perX = 2;
var speed = 10;

function layerMv(){
  if(ichi<maxX) {
ichi = ichi + perX;
if(document.all){
window['S1'].style.visibility = "visible";
window['S1'].style.left = ichi;
}
if(document.layers){
document['S1'].visibility = "visible";
document['S1'].left = ichi;
}
timerID = setTimeout("layerMv()",speed);
  }else if(ichi==maxX){
clearTimeout(timerID);
  }
}
お礼コメント
manmosu

お礼率 100% (2/2)

本当に助かりました。
スクリプトまで作って頂き、ありがとうございました。
投稿日時:2001/04/02 18:19

その他の回答 (全1件)

  • 回答No.1

ベストアンサー率 28% (32/111)

JavaScriptは、エラーが出るとそれ以降動作しません。
manmosuさんのページでもエラーが出てるのではないでしょうか?

JavaScriptの動作テストをする場合は、ブラウザの設定で
「エラーの詳細を表示する」
の設定をしていた方がいいと思います。

IEなら、[ツール]→[インターネットオプション]→[詳細設定]で、できます。
お礼コメント
manmosu

お礼率 100% (2/2)

さっそくの回答ありがとうございました。
投稿日時:2001/04/02 18:22
関連するQ&A

ピックアップ

ページ先頭へ