2013-06-26 22 views
0

我有下面的代碼,jQuery的,如何清理localStorage的和停止功能

function myCustomFunction() { 
    setTimeout(function() { 
     $('#autoplay').get(0).click(); 
    }, 2000); 
} 

var isAutoplay = localStorage.getItem('autoplay'); 

if (isAutoplay) { 
    myCustomFunction(); 
} 

$('#autoplay').on('click', function() { 
    localStorage.setItem('autoplay', true); 
    myCustomFunction(); 
}); 

// CLEAR THE LOCALSTORAGE 
$('#stopplay').on('click', function() { 
    localStorage.removeItem('autoplay'); 
}); 

我認爲通過清除「localStorage的」將註冊「isAutoplay」是假的,進而停止myCustomFunction()函數,而是改爲「localStorage.removeItem('autoplay');」似乎沒有清除它。

如何通過點擊鏈接停止自動播放功能?

謝謝

+0

會發生什麼是邏輯的:自動回叫回調使用setTimeout自行調用。什麼是難以得到的是你的目標是什麼。 –

回答

0

我不確定你的目標是什麼,因爲你的代碼沒有任何用處。但是,也許你想這樣的:

var timer; 
function myCustomFunction() { 
    timer = setTimeout(function() { 
     $('#autoplay').get(0).click(); 
    }, 2000); 
} 

var isAutoplay = localStorage.getItem('autoplay'); 

if (isAutoplay) { 
    myCustomFunction(); 
} 

$('#autoplay').on('click', function() { 
    localStorage.setItem('autoplay', true); 
    myCustomFunction(); 
}); 

// CLEAR THE LOCALSTORAGE and remove the timer 
$('#stopplay').on('click', function() { 
    localStorage.removeItem('autoplay'); 
    clearTimeout(timer); 
}); 
+0

謝謝你做到了。 – Richard

0

你的計時器總是模擬click()$('#autoplay').get(0)這就要求localStorage.setItem('autoplay', true);

你正在循環中。

要解決此問題,您必須單獨執行這兩項操作,或單擊$('#stopplay')時手動取消定時器。

更多的解釋將幫助我爲您製作正確的代碼。