コードに問題があり、それが私にナットをもたらしています。私はこれに何時間も執着してきました。そして最悪の部分は、それが本当に単純だと仮定していることです。私はそれを理解できません。JavaScript内のifステートメント内の変数の値を変更する
Javascript/jQueryを使用して単純なイベントカレンダーを作成しようとしています。これは私が持っている単純化されたコードです:
今var currentMonth = 1;
if (currentMonth == 1) {
$("#prev-month").click(function() {
currentMonth = 12;
});
$("#next-month").click(function() {
currentMonth = 2;
});
}
if (currentMonth == 2) {
$("#prev-month").click(function() {
currentMonth = 1;
});
$("#next-month").click(function() {
currentMonth = 3;
});
}
if (currentMonth == 3) {
$("#prev-month").click(function() {
currentMonth = 2;
});
$("#next-month").click(function() {
currentMonth = 4;
});
}
if (currentMonth == 4) {
$("#prev-month").click(function() {
currentMonth = 3;
});
$("#next-month").click(function() {
currentMonth = 5;
});
}
私はID「PREVヶ月でボタンをクリックした場合、私は「次の月」IDでボタンをクリックするたびに、それは常に2です。 "それは常に12です。それは決して変化しません。私は間違って何をしていますか?
うん、おかげで。私は今は固定されていますが、私は特に「+ 10」が好きではありません。 10はどこからも出現しそうな "魔法の数"です。おそらく、Neysorの答えのように、より明示的にコードを書くことがベストでしょう。 –
個人的には、(暗黙の)グローバルスコープではなく、変数に1つのハンドラとクロージャスコープを使用します。外部で使用する必要がある場合は、 '$(this).parent()。data( 'data-current-month'、currentMonth)' –
マジックナンバーの代わりに、 '(currentMonth - 1)%12 || 12; ' –