Javascript 变量值随clearInterval而销毁

Javascript 变量值随clearInterval而销毁,javascript,jquery,Javascript,Jquery,我尝试每100ms更改一个元素的文本。每100毫秒,数字变为n+1。此循环仅在用户单击屏幕时执行。如果用户停止,则循环将停止 现在的问题是变量scoren的当前值总是以0开头。分数不是这样的。如果scoren仅在页面加载时以0开始,并在第二次mousedown后以当前值恢复,我如何编辑该代码?另外,如何在mouseup之后保存scoren值并使用该值继续 我已经为那件事做了准备 <p id="score">score:</p> 您首先需要了解作用域在javascript

我尝试每100ms更改一个
元素的文本。每100毫秒,数字变为
n+1
。此循环仅在用户单击屏幕时执行。如果用户停止,则循环将停止

现在的问题是变量
scoren
的当前值总是以
0
开头。分数不是这样的。如果
scoren
仅在页面加载时以
0
开始,并在第二次
mousedown
后以当前值恢复,我如何编辑该代码?另外,如何在
mouseup
之后保存
scoren
值并使用该值继续

我已经为那件事做了准备

<p id="score">score:</p>

您首先需要了解作用域在javascript中是如何工作的。在scoren变量下的每个鼠标上重新初始化。这样做:

var loop;
var scoren = 0;
function game() {
  score = setInterval(function() {
    scoren += 1;
    $('#score').text('score:' + scoren);
  },100);

}   

$(document).mousedown(function() {
  game();
});

$(document).mouseup(function() {
  clearInterval(score);
});

您首先需要了解作用域在javascript中是如何工作的。在scoren变量下的每个鼠标上重新初始化。这样做:

var loop;
var scoren = 0;
function game() {
  score = setInterval(function() {
    scoren += 1;
    $('#score').text('score:' + scoren);
  },100);

}   

$(document).mousedown(function() {
  game();
});

$(document).mouseup(function() {
  clearInterval(score);
});

您需要取
var分数=0函数外部的行

var loop;
var scoren = 0; //This line is important
function game() {

score = setInterval(function() {
    scoren += 1;
     $('#score').text('score:' + scoren);
},100);



}   
    $(document).mousedown(function() {
    game();
});

$(document).mouseup(function() {
clearInterval(score);
});

您需要取
var分数=0函数外部的行

var loop;
var scoren = 0; //This line is important
function game() {

score = setInterval(function() {
    scoren += 1;
     $('#score').text('score:' + scoren);
},100);



}   
    $(document).mousedown(function() {
    game();
});

$(document).mouseup(function() {
clearInterval(score);
});
试试这个;)

var评分=0;
/*缓存对象以提高性能*/
var记分板=$(“#分数”);
函数游戏(){
分数=设置间隔(函数(){
记分板。文本(++scoren);
}, 100);
}   
$(文档).mousedown(函数(){
游戏();
});
$(文档).mouseup(函数(){
清除间隔(分数);
});

分数:

试试这个;)

var评分=0;
/*缓存对象以提高性能*/
var记分板=$(“#分数”);
函数游戏(){
分数=设置间隔(函数(){
记分板。文本(++scoren);
}, 100);
}   
$(文档).mousedown(函数(){
游戏();
});
$(文档).mouseup(函数(){
清除间隔(分数);
});


评分:

这里是另一种方法。您可以创建可重用的对象:

var循环;
var game=新游戏();
函数游戏(){
这是0.scoren=0;
this.score=null;
this.start=函数(){
this.score=setInterval(函数(currentGame){
currentGame.scoren+=1;
$('#score').text('score:'+currentGame.scoren);
}.bind(null,this),100);
}
this.stop=函数(){
clearInterval(此.score);
}
}
$(文档).mousedown(函数(){
游戏开始
});
$(文档).mouseup(函数(){
游戏。停止();
});


score:

这里是另一种方法。您可以创建可重用的对象:

var循环;
var game=新游戏();
函数游戏(){
这是0.scoren=0;
this.score=null;
this.start=函数(){
this.score=setInterval(函数(currentGame){
currentGame.scoren+=1;
$('#score').text('score:'+currentGame.scoren);
}.bind(null,this),100);
}
this.stop=函数(){
clearInterval(此.score);
}
}
$(文档).mousedown(函数(){
游戏开始
});
$(文档).mouseup(函数(){
游戏。停止();
});


score:

将变量
score设置为全局变量,不要将其放入函数
game()
中。当它在函数中时,它总是从0开始。当您将其设置为全局时(例如,将其置于函数外部),您将从存储在该变量中的值开始。将变量设置为全局变量
scoren
global,不要将其置于函数
game()
中。当它在函数中时,它总是从0开始。当您将其设置为全局时(例如,将其置于函数外部),您将从存储在该变量中的值开始。好的!Scopes问题在S.O.中非常常见;)我们会自动回答的没错!Scopes问题在S.O.中非常常见;)我们只是自动回答