每次触发事件并显示值时增加var

时间:2017-07-05 00:36:47

标签: javascript jquery

我每次在输入字段中写'yes'时都试图递增一个变量,但n值在控制台中始终保持为'1'。

$('#txt').on('keyup', function() {
    let n = 0;
    if($(this).val() == 'yes') {
        n++;
        console.log("You wrote 'yes' " + n + " times");
    }
});

我在这里遗漏了一些东西,但我不知道是什么。如何继续增加n

4 个答案:

答案 0 :(得分:5)

每次点击都会重置n变量,因为它是处理程序中的。因此,每次运行该处理程序时,都会使用初始值创建一个新变量。在事件处理程序之外声明并初始化它:

let n = 0;
$('#txt').on('keyup', function() {
  if($(this).val() == 'yes') {
    n++;
    console.log("You wrote 'yes' " + n + " times");
  }
});

这样,每次点击时,变量都不会被重新声明并初始化为0,它存在于处理程序之外。

答案 1 :(得分:1)

这是因为你在听众中声明了变量。把它放在你的听众之外。

答案 2 :(得分:1)

声明n外部事件处理程序,如下所示:

let n =0;
$('#txt').on('keyup',function(){
    if($(this).val()=='yes'){
        n++;
        console.log("You wrote 'yes' " +n+ " times");
    }
})

答案 3 :(得分:1)

范围?只需将变量n放在事件回调之外;)