【发布时间】:2016-08-09 15:10:14
【问题描述】:
我希望我的事件侦听器函数 isTwoCards 从调用它的对象中获取信息。这段代码给了我 element.getAttribute 不是函数
var gameboard = document.getElementById('game-board');
var cards = ['queen', 'queen', 'king', 'king'];
var cardsInPlay = [];
var isTwoCards = function(element){
cardsInPlay.push(element.getAttribute('data-card'));
if (cardsInPlay.length === 2){
isMatch(cardsInPlay);
cardsInPlay = [];
}
}
var createBoard = function(){
for (var i = 0; i < cards.length; i++){
cardDiv = document.createElement('div');
cardDiv.setAttribute('class', 'card');
cardDiv.setAttribute('data-card', cards[i]);
cardDiv.setAttribute('id', i);
cardDiv.addEventListener('click', isTwoCards(this));
gameboard.appendChild(cardDiv);
}
}
createBoard()
【问题讨论】:
-
cardDiv.addEventListener('click', isTwoCards);然后在isTwoCards()做:cardsInPlay.push(this.getAttribute('data-card')); -
您不需要将其作为参数传递(这也不起作用)。将
isTwoCards(this)替换为isTwoCards,将element.getAttribute('data-card')替换为this.getAttribute('data-card') -
addEventListener('click', isTwoCards(this))isTwoCards 函数,而不是将其添加为监听器。
标签: javascript dom