我有一個網站,有一個圖像庫,每隔幾秒使用JavaScript更改圖像;不過,我想知道如何在用戶點擊其中一個圖像時停止更改圖像。如何停止運行onClick的圖庫?
到目前爲止,圖像按計劃旋轉,但我似乎無法使用「onClick」腳本來停止用戶點擊圖像時的旋轉。我不需要有一個警報彈出窗口或需要它做任何事情,我只需要它來當有人點擊其中一張圖片時停止圖像旋轉。
這裏是HTML代碼我有:
我有一個網站,有一個圖像庫,每隔幾秒使用JavaScript更改圖像;不過,我想知道如何在用戶點擊其中一個圖像時停止更改圖像。如何停止運行onClick的圖庫?
到目前爲止,圖像按計劃旋轉,但我似乎無法使用「onClick」腳本來停止用戶點擊圖像時的旋轉。我不需要有一個警報彈出窗口或需要它做任何事情,我只需要它來當有人點擊其中一張圖片時停止圖像旋轉。
這裏是HTML代碼我有:
else (getValue=='STOP')
{
alert("STOPPED");
}
這不會做你可能想要做的事。它應該是:
else if (getValue=='STOP')
{
alert("STOPPED");
}
首先,您在代碼的其中一行忽略了關鍵字「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>
我認爲我們應該使用setInterval進行重複,因爲我們應該推動儘可能多的邏輯和測試來由JavaScript引擎執行,因爲JavaScript引擎比JIT編譯的JavaScript更節約資源。 – 2013-02-10 22:45:53
感謝您的回覆。但是,我將如何將我的原始圖像源代碼的一部分整合到您創建的內容中?我將圖像名稱簡化爲增加1個整數,但實際上我按照原始問題的方式編寫了代碼,因爲我必須指向外部圖像源,並且每個圖像都有其自己的唯一名稱。有什麼建議麼?謝謝! – Virgil 2013-02-12 03:19:03
謝謝,但我已經嘗試過,它也不起作用。 – Virgil 2013-02-12 03:27:23