次のコードがあります。
HTML
<button>Add Name</button>
<ul id="names"></ul>
JS
class NameField {
constructor(name) {
const field = document.createElement('li');
field.textContent = name;
const nameListHook = document.querySelector('#names');
nameListHook.appendChild(field);
}
}
class NameGenerator {
constructor() {
const btn = document.querySelector('button');
btn.addEventListener('click', this.addName);
}
addName() {
const name = new NameField("Max");
}
}
const gen = new NameGenerator();
ここでボタンをクリックすると、関数addName
が実行されるたびに max が HTML に出力されます。
しかし、行を次のように変更すると:
btn.addEventListener('click', this.addName());
次に、関数をすぐに呼び出すため、期待されるブラウザー HTML に最初に印刷された Max を取得します()
。.
Max
しかし、最初の印刷後、ボタンをクリックしても再度印刷されない理由がわかりません。何故ですか ?
Max
わかりました、HTML で最初の印刷を取得しましたが、ボタンをクリックしたときにもう一度印刷するべきではありませんか? そして、なぜ私は得られないのですか?