JavaScript で += 演算子を不適切に使用すると増分エラーが発生する
<p>テキストをフェードインしようとしている div があります。 </p>
<p>
<pre class="brush:js;toolbar:false;">function fadeIn(divNum) {
ID = null にします。
fadeDiv = document.getElementById("jsTest");
fadeDiv.innerHTML = "";
console.log(fadeDiv.style.opacity);
if (divNum == 1) {
fadeDiv.innerHTML = "テキスト";
} else if (divNum == 2 ) {
fadeDiv.innerHTML = "いくつかの異なるテキスト";
} else if (divNum == 3) {
fadeDiv.innerHTML = "まだ異なるテキスト";
} それ以外 {
fadeDiv.innerHTML = "おっと! こんなことは起こらないはずです";
}
クリアインターバル(id);
id = setInterval(moveIt,100);
関数 moveIt() {
if (fadeDiv.style.opacity == 1) {
クリアインターバル(id);
} それ以外 {
fadeDiv.style.opacity = 0.1;
console.log(fadeDiv.style.opacity);
}
}
}</pre>
<pre class="brush:html;toolbar:false;"><div style="opacity: 0;" id="jsTest"></div>
<button class="boxButtonsb" onmouseover="fadeIn(1)">JavaScript テスト</button></pre>
</p>
<p>ホバーすると、不透明度は <code>.1</code> だけ減少し、そこで永遠にループしているように見えます。コンソール ログには、無限の <code>0.1</code> エントリが表示されます。 </p>
<p> ただし、これを反転すると、初期の不透明度が 1 になり、div から始まるテキストがあり、実際には <code>fadeDiv.style.opacity を使用して <code>fadeIn</code> を設定します。 == 0</code> <code>clearInterfal(id)</code> の if ステートメントとしてチェックされ、<code>fadeDiv.style.opacity< <code>-= 0.1</code> ;/ によってデクリメントされました。コード>を選択すると、正常に動作します。 </p>
<p>なぜデクリメントは正しくてインクリメントは正しくないのか全く分かりません。 </p>