2013-02-10 80 views
0

我有一個網站,有一個圖像庫,每隔幾秒使用JavaScript更改圖像;不過,我想知道如何在用戶點擊其中一個圖像時停止更改圖像。如何停止運行onClick的圖庫?

到目前爲止,圖像按計劃旋轉,但我似乎無法使用「onClick」腳本來停止用戶點擊圖像時的旋轉。我不需要有一個警報彈出窗口或需要它做任何事情,我只需要它來當有人點擊其中一張圖片時停止圖像旋轉。

這裏是HTML代碼我有:

回答

1
else (getValue=='STOP') 
{ 
    alert("STOPPED"); 

} 

這不會做你可能想要做的事。它應該是:

else if (getValue=='STOP') 
{ 
    alert("STOPPED"); 

} 
+0

謝謝,但我已經嘗試過,它也不起作用。 – Virgil 2013-02-12 03:27:23

0

首先,您在代碼的其中一行忽略了關鍵字「IF」。

但是,創建可終止的重複動作的方法是setInterval,然後使用clearInterval來終止重複。

semaphore = setInterval(somefunction, someinterval); 
clearInterval(semaphore); 

實例(我寫這個現成的,袖口,所以可能有一些錯誤,但你SHD的想法):

<img src="./images/image1.jpg" id="imageGallery" name="imageGallery" 
onclick="chooseImg(this)" /> 

<script> 

var turn = setInterval(function(){imgTurn()},5000); 
var images = function2CreateImgArray(); 
var imageN = 0; 

function chooseImg(img){ 
    clearInterval(turn); 
    function2DisplayImg(imageN); // or do whatever 
} 

function imgTurn(){ 
    if (imageN++ >= images.length) imageN = 0; 
    function2DisplayImg(imageN++); 
} 

</script> 

你可以使用的setTimeout更換的setInterval。

var turn = setTimeout(function(){imgTurn()},5000); 

但隨後你需要使用clearTimeout停止它:

clearTimeout(turn); 

但是如果你使用的setTimeout,你將需要setTimeout的下一個圖像顯示,所以你甚至不需要clearTimeout停止旋轉。

<img src="./images/image1.jpg" id="imageGallery" name="imageGallery" 
onclick="chooseImg(this)" /> 

<script> 

setTimeout(function(){imgTurn()},5000); 
var images = function2CreateImgArray(); 
var imageN = 0; 
var turn = 1; 

function chooseImg(img){ 
    turn = 0; 
    function2DisplayImg(imageN); // or do whatever 
} 

function imgTurn(){ 
    if (turn==0) return; 
    if (imageN++ >= images.length) imageN = 0; 
    function2DisplayImg(imageN++); 
} 

</script> 
+0

我認爲我們應該使用setInterval進行重複,因爲我們應該推動儘可能多的邏輯和測試來由JavaScript引擎執行,因爲JavaScript引擎比JIT編譯的JavaScript更節約資源。 – 2013-02-10 22:45:53

+0

感謝您的回覆。但是,我將如何將我的原始圖像源代碼的一部分整合到您創建的內容中?我將圖像名稱簡化爲增加1個整數,但實際上我按照原始問題的方式編寫了代碼,因爲我必須指向外部圖像源,並且每個圖像都有其自己的唯一名稱。有什麼建議麼?謝謝! – Virgil 2013-02-12 03:19:03