クリックは機能しますが、クリックされた入力には値の代わりに未定義があります。
値を取得するときにclick.target
の代わりにthis
を使用したため、あなたはclick.target
を使用したい:あなたのハンドラ内
document.frame.screen.value += click.target.value;
// Here -----------------------^^^^^^^^^^^^
this
はdocument.body
になります。クラスをチェックするときにはclick.target
を正しく使用しましたが、値を取得するときは正しく使用しませんでした。
いくつかの注意:
- FWIW、イベントハンドラでイベント・パラメータのための通常の名前は
event
かe
、ないclick
です。
- 要素は複数のクラスを持つことができ、すべてが
className
になります。 の問題が考えられる場合は、代わりに.classList.contains("abc")
をご覧ください。 (classList
は現代のすべてのブラウザで利用でき、古くなったものにポリフィルすることができます)
input
要素では問題ありませんが、将来、子孫要素を持つ要素でこれを行う場合は、クリックして、ターゲット要素の子孫にあった可能性を処理するためのループを持っている必要があります:
var node = event.target;
while (!node.classList.contains("abc")) {
if (node === this) {
return; // The click didn't pass through a matching element
}
node = node.parentNode;
}
// Use it here
'this'は'もそう[値]が存在しませんdocument.body'うとしています。 – evolutionxbox