私はこのコードを自分のウェブサイトに持ち、画像の数を数え、ユーザーが希望するカテゴリをクリックするたびにリストを出力します。Javascript accidental closure
問題は、私のイメージカウンタ変数(noIMG)は、関数が呼び出されるたびにそれ自身をクリアしないということです。私は関数の最後にリセット(noIMG)を追加しようとしましたが、それは悪い考えのように思えました。
私はいくつかの研究を行い、閉鎖に関する記事を見つけました。それを修正するために数多くのメソッドを試した後も、私のコードはまだ私が望むように動作していません。
function thumbCounter(){
var noIMG = $(".artwork img").size()+1;
for (var count = 1; count < noIMG; count++){
if (count == 1){
$('#list_here').append('<li class="active">' +count+ '</li>');
} else{
$('#list_here').append('<li>' +count+ '</li>');
}
}
};
あなたはそれを呼び出すにはどうすればよいですか? – BoltClock
「自分自身をクリアする」とはどういう意味ですか? 'count'はあなたのカウンター変数です。これは、関数を呼び出すたびに1から再起動する変数です。 'noIMG'は、イメージを追加するためにDOMを間に変更しない限り、関数を呼び出すたびに同じであると予想されます。しかし、おそらくこれはあなたが求めているものではありませんか? –
異なる 'noIMG'変数(またはウィンドウプロパティ)をシャドーイングしている可能性があります。このコードでは、文脈からは、偶然であろうとなかろうと、閉鎖はありませんが、文脈上、まったく別の話かもしれません。 –