2017-07-05 17 views
2

入力フィールドに「はい」と書かれるたびに変数をインクリメントしようとしていますが、nの値は常に「1」のままです。イベントがトリガーされ、値が表示されるたびに変数にインクリメント

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

ここに何かがありませんが、わかりません。増分を維​​持するにはn

答えて

5

クリックするたびにn変数がリセットされます。がハンドラにあるためです。したがって、ハンドラが実行されるたびに、新しい変数が初期値で作成されます。宣言し、イベントハンドラの外にそれを初期化:この方法を

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

、変数が0にあなたがをクリックするたびに再宣言して初期化されていない、それがハンドラの外部に存在します。

1

リスナーの内部で変数を宣言しているからです。それをあなたの聞き手の外に置いてください。

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

は、このようなn外のイベントハンドラを宣言しますか?変数nをイベントコールバックの外に置くだけです);

1

範囲:

関連する問題