子ノードを反復処理するためのヘルパ関数を作成します。NodeListカスタムメソッドをプロトタイプで追加できません
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<ul class="list">
<li>1</li>
<li>2</li>
<li>3</li>
</ul>
<script>
NodeList.prototype.addEvent = func => {
for (let i = 0; i < this.length; i++) {
this[i].addEventListener('click', func)
}
}
let myList = document.getElementsByClassName('list')[0]
function test() {
console.log('Hello')
}
myList.addEvent(test)
</script>
</body>
</html>
"myList.addEventは関数ではありません"と思っています。
私は、ソースMDN(ページの真ん中)でこれをachiveする方法の例を見ていた:https://developer.mozilla.org/en-US/docs/Web/API/NodeList
var elements = document.querySelectorAll(".suggestions");
NodeList.prototype.addEventListener = function(event, func) {
this.forEach(function(content, item) {
content.addEventListener(event, func);
});
}
function log() {
console.log(this, " was clicked");
}
elements.addEventListener("click", log);
UPDATE:.querySelectorAllを(使用
)を追加するために働きますNodeListのプロトタイプではなく、.getElementsByClassName(...)[0]、.getElementsByTagName(...)[0]または.getElementById(...) - これはどのように静的ノードリスト?
'addEvent'!==' AddEvent' – Utkanos
@Utkanosあなたは明確にしてくださいもらえますか? – DarkCodeWiz
@DarkCodeWiz JavaScriptは大文字と小文字を区別します。 – Xufox