变量值被clearInterval破坏

Bod*_*els 1 javascript jquery

我尝试<p>每隔100ms 更改一个元素的文本.数字每100毫秒n + 1.此循环仅在用户单击屏幕时执行.如果用户停止循环停止.

现在的问题是变量的当前值scoren总是以0.这不是得分如何运作.如何编辑scoren仅在页面加载时开始的代码,0并在第二个之后mousedown使用当前值恢复?另外如何在scoren值之后保存值mouseup并恢复该值?

我为此做了一个小提琴.

<p id="score">score:</p>
Run Code Online (Sandbox Code Playgroud)
var loop;

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

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

$(document).mouseup(function() {
    clearInterval(score);
});
Run Code Online (Sandbox Code Playgroud)

Mar*_*ude 5

您需要首先了解范围如何在JavaScript中工作.你正在重新初始化每个mousedown里的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);
});
Run Code Online (Sandbox Code Playgroud)

  • 打败我:)这是一个更新的小提琴:https://jsfiddle.net/a0sg10nt/1/ (2认同)