2017-08-01 43 views
0

我有這樣的代碼:發生click事件執行方法後如何在JavaScript中保存變量的值?

var n = 0; // << I want save value of this var 
 

 
$('.next').click(function() { // << after this method run 
 
    n++ 
 
}); 
 
function run() { 
 
       setInterval(function() { 
 
        n++; 
 
        var slideId = '#' + "slide" + (n); 
 
        var dotId = '#' + "dot" + (n); 
 

 
        if (n == settings.slideNumber) { 
 
         n = 0; 
 
        } 
 
        var lastSlideId = '#' + "slide" + (n + 1); 
 
        var lastDotId = '#' + "dot" + (n + 1); 
 

 
        $(slideId).css({display: 'none'}); 
 
        $(dotId).css({backgroundColor: '#1a1a1a'}); 
 
        $(lastSlideId).css({display: 'block'}); 
 
        $(lastDotId).css({backgroundColor: '#0AC986'}); 
 
       }, 2000); 
 
      } 
 

 
      run();

後,運行方法從拳頭開始和n的值將再次爲零。 如何在點擊事件後保存n var的值? (考慮我在jQuery插件中寫了這個方法)

+1

,我不知道你想做什麼,但click事件纔會增加'N'略快於每2秒一次。 – evolutionxbox

+0

在函數外部聲明你的變量,並且不要在你的函數中重新初始化爲零 –

+0

親愛的@evolutionxbox我想要的是完全一樣的東西。所以當我點擊它應該會更快。 –

回答

0

你可以聲明n作爲全局變量,以跟上最新的n值。

此外,click事件應該是run功能之外,否則,每次執行run功能會附加一個新的事件偵聽器button click

我已經根據您的問題創建了一個樣本。希望能幫助到你。

let n = 0; 
 

 
$('#btn').click(function() { 
 
    n++; 
 
    console.log("Value of n::",n) 
 
}); 
 

 
function run() { 
 
    console.log("Value of n::",n) 
 
} 
 

 
run(); 
 

 
$('#run').click(run);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<button id="btn">Click</button> 
 

 
<button id="run">Run</button>

+0

我真正的鱈魚它是一個jQuery插件。在我發佈這個問題之前,我的代碼和你寫的一樣。在你的代碼或這個問題是當我調用run方法js從第一個開始所有的插件(所有的腳本)所以當涉及到n var的行,n的值變成零,就像你調用這個方法的第一次。 –

+0

什麼是settings.slideNumber?它在哪裏設置? –

+0

settings.slideNumber是一個數字,我的幻燈片數量。它在第一次設置我的jquery插件作爲一個對象。如果我把你的整個代碼都帶給你,你是否準備好閱讀它? –

相關問題