2017-08-01 45 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插件作为一个对象。如果我把你的整个代码都带给你,你是否准备好阅读它? –

相关问题