javascript - 获取错误 'Cannot read property ' getAttribute' of undefined'

标签 javascript undefined

这是我的代码。每当我单击其中一张卡片时,我都会在控制台中收到错误消息:

Cannot read property 'getAttribute' of undefined

为什么会发生这种情况?

var cards = [
{
    "rank": "queen",
    "suit":"hearts",
    "cardImage": "images/queen-of-hearts.png"
},{
    "rank": "queen",
    "suit":"diamonds",
    "cardImage": "images/queen-of-diamonds.png"
},{
    "rank": "king",
    "suit":"hearts",
    "cardImage": "images/king-of-hearts.png"
},{
    "rank": "king",
    "suit":"diamonds",
    "cardImage": "images/king-of-diamonds.png"
}

]

var cardsInPlay = [];

var checkForMatch = function() {
    this.setAttribute('src', this.cardImage);
    if(cardsInPlay.length === 2) {
        cardsInPlay[0] === cardsInPlay[1]?alert('You found a match!'):alert('Sorry, try again.');
    }
}

var flipCard = () => {
    var cardId = this.getAttribute('data-id');
    console.log(`User flipped ${cards[cardId].rank}`);
    cardsInPlay.push(cards[cardId].rank);
    console.log(cards[cardId].cardImage);
    console.log(cards[cardId].suit);

    checkForMatch();
}

var createBoard = () => {
    for (var i = 0; i < cards.length; i ++) {
        var cardElement = document.createElement('img');
        cardElement.setAttribute('src','images/back.png');
        cardElement.setAttribute('data-id', i);
        cardElement.addEventListener('click', flipCard);
        document.getElementById('game-board').appendChild(cardElement);
    }

}

createBoard();

enter image description here

最佳答案

this 在您的上下文中指的是函数 checkForMatch(),而不是 flipCard(),这意味着如果您要使用flipCard() 中的 this 会起作用,因为它引用了 cardElementcheckForMatch() 中的 this 引用的是函数,不是cardElement

您可以做的是将 this.setAttribute('src', this.cardImage); 替换为 this 的预期内容。

关于javascript - 获取错误 'Cannot read property ' getAttribute' of undefined',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43599551/

相关文章:

node.js - docker "Node.js version undefined detected"

javascript - Array(len) 初始化程序中的未定义值

Angular2 对象无法设置未定义的属性

javascript - "Cannot read property ' findDOMNode ' of undefined"使用 React-widgets 时

PHP使用未定义常量错误

javascript - 遍历 Formset 以求和值 - JQuery

javascript - 将数组的内容插入另一个数组而不循环

java - Pdfbox 为什么无法加载文档?

javascript - 解决函数未注入(inject)到 Controller 中的问题 [Angular JS]

javascript - 脚本仅在窗口大于 div 时运行