回答者ではないですが下記の質問に答えたいと思います。
少し時間が経ってしまっていますがまだ未解決でしょうか?
追加の質問ですが、
document.querySelector('#keys').addEventListener('click', ev =>
のところで、「ev」とは何のことでしょうか?
また、次の行で定数tに代入した 「 ev.target;」 はどのように理解すればいいのでしょうか?
解説いただけたらと思います。
addEventListenerの第二引数で関数を宣言して、その宣言した関数の仮引数にev
という名前を付けています。
ちなみに仮引数はevでなくてもご自身で好きな名称を設定することができます。
sushiでもtaroでも挙動に影響は出ません。
この場合evと命名されていますが、event
の略だと思われます。
実際はe
と略されることがほとんどです。
では、このevの中身は何かというとeventオブジェクトです。
もしオブジェクトがわからない場合は{}
で囲われている入れ物だとお考えください。
console.log(ev)としてコンソールでevを確認してみると、PointerEventというオブジェクトが返ってきます。
このPointerEventの中身を見てみると、何やらたくさん出てきますがその中にtargetというプロパティが存在するのが確認できます。
更にtargetの中身を見てみると、クリックしたボタンの要素が入っていることがわかります。
つまり、
ev は PointerEventというオブジェクト
target は クリックした要素
となります。
オブジェクトの中にあるプロパティにアクセスするときは、オブジェクト名とプロパティ名を.(ドット)
で繋げる必要があるので、ev.target
としています。
例としてRESETボタンをクリックした時、ev.targetの中身は<button>RESET</button>
となります。1をクリックした時のev.targetの中身は<button>1</button>
です。
こちらもconsole.log(ev.target)としてコンソールで表示してみると中身が確認できます。
まとめると、
evとは仮引数でeventの略です。中身に入ってくるのはPointerEventというeventオブジェクトです。
ev.targetはPointerEventの中のtargetプロパティのことで、中身はクリックした要素のHTMLです。
「addEventListener e」で検索するといくつか解説記事が出てきますので、より理解を深めたい場合は調べてみてください。