document.write
が問題です。ブラウザがページを完全に読み込む前にのみ動作します。その後、document.write
は機能しません。既存のページの内容をすべて削除します。
最初にdocument.write
が実行され、ページが完全に読み込まれる前に実行されます。このため、2つのボタンの隣に0
が表示されます。
しかし、ページが読み込まれました。ボタンをクリックするとイベントハンドラが実行されるため、ページが既に完全にロードされているため、その時点では機能しないdocument.write
が呼び出されます。
document.write
はもう使用しないでください。DOMを最新のものに更新する方法はたくさんあります。この場合、<span>
要素が作成され、textContent
を使用してコンテンツが更新されます。
また、代わりにインラインイベントリスナーのaddEventListener
を使用:
var x = 0;
var span = document.querySelector('span'); // find the <span> element in the DOM
var increment = document.getElementById('increment'); // find the element with the ID 'increment'
var decrement = document.getElementById('decrement'); // find the element with the ID 'decrement'
increment.addEventListener('click', function() {
// this function is executed whenever the user clicks the increment button
span.textContent = x++;
});
decrement.addEventListener('click', function() {
// this function is executed whenever the user clicks the decrement button
span.textContent = x--;
});
<button id="increment">increment</button>
<button id="decrement">decrement</button>
<span>0</span>
他の人が述べたようにx
の値がインクリメントされるので、第一x++
は、目に見える効果はありませんの後に<span>
の内容が更新されます。しかし、それはあなたの元の問題ではありませんでした。
いいえ、問題はポストインクリメントではありません。 'document.write'です。明示的に言いたいことはありますか? – PeterMader
@PeterMaderは更新された答えを確認し、次に! –