0

次のスクリプトと後の onclick-event を使用しています。onclick を使用すると、回転するバナーが失われ、ランダムな間隔で画像が表示され始めます。最初のコードの最後にある「setTimeout」をオーバーライドする必要があると思います。質問はどのように正確ですか?

<script language="JavaScript" type="text/javascript">
<!--
var RotatingImage1_Index = -1;
var RotatingImage1_Images = new Array();
RotatingImage1_Images[0] = ["images/ban_image1.png","",""];
<!-- 15 Images in total-->
RotatingImage1_Images[14] = ["images/ban_image2.png","",""];

function RotatingImage1ShowNext(){
RotatingImage1_Index = RotatingImage1_Index + 1;
   if (RotatingImage1_Index > 14)
   RotatingImage1_Index = 0;
   eval("document.RotatingImage1.src = RotatingImage1_Images[" + RotatingImage1_Index + "][0]");
   setTimeout("RotatingImage1ShowNext();", 4000);}
// -->
</script>
<img src="images/ban_image1.png" id="ban_img1" name="RotatingImage1">

この部分は正常に機能します。

<div id="ban_next" align="left">
<a href="#" onclick="RotatingImage1ShowNext();return false;">
<img src="images/ban_next.png" id="ban_nxt1"></a></div>

この部分も同様に機能しますが、「setTimeout」を「0」に設定した場合にのみ正しく機能します。申し訳ありませんが、私はこれに完全に慣れていません。このstackoverflow.comの質問を見ていましたが、ここでそれを実装する方法がわかりません。

よろしくお願いします。

編集:画像の回転が自動的に開始されます。4 秒ごとに新しい画像が表示されます。画像にはテキスト、またはより良い内部関係者のジョークが含まれています。読者はそれらを読みたくなるはずですが、自動回転がそこに注意を向ける場合、すべての画像を見るために丸 1 分間その注意を維持する必要があります。それはおそらく長すぎる。そこで、タイマーを上書きして「クリック時に」次の画像を表示するボタンを実装することを考えました。ただし、クリック後、回転時間は自動回転に戻るはずです。それが計画です。

Prusseさん、ありがとうございます

4

1 に答える 1

0

あなたは評価を必要としません、ただそうしてくださいdocument.RotatingImage1.src = RotatingImage1_Images[RotatingImage1_Index][0]

説明されている動作は、複数のタイマーが起動しているために発生します。初めて呼び出されるときに1つのセットがありRotatingImage1ShowNext、onclickハンドラーから呼び出されるたびに1つのセットがあります。これを修正するには、タイマーのグローバルを宣言し、別のタイムアウトが設定される前に、設定されている場合はそれをクリアします。好き:

var global_timerid;
function RotatingImage1ShowNext(){
  //RotatingImage1_Index = RotatingImage1_Index + 1;
  //if (RotatingImage1_Index > 14) RotatingImage1_Index = 0;
  RotatingImage1_Index = (RotatingImage1_Index + 1) % RotatingImage1_Images.length;
  //document.RotatingImage1.src = RotatingImage1_Images[RotatingImage1_Index][0];
  document.getElementById('ban_img1').src = RotatingImage1_Images[RotatingImage1_Index][0];
  if (global_timerid) clearTimeout(global_timerid);
  global_timerid = setTimeout(RotatingImage1ShowNext, 4000);
}
于 2011-07-05T17:05:53.320 に答える