【发布时间】:2020-04-25 00:31:34
【问题描述】:
- 浏览器告诉我问题可能出在 checkForMatch() 和 FlipCard 上
-
具体来说,它说 cardId 是未定义的。
const cards = [ { rank: "queen", suite: "hearts", cardImage: "images/queen-of-hearts.png" }, { rank: "queen", suite: "diamonds", cardImage: "images/queen-of-diamonds.png" }, { rank: "king", suite: "hearts", cardImage: "images/king-of-hearts.png" }, { rank: "king", suite: "diamonds", cardImage: "images/king-of-diamonds.png" } ]; let cardsInPlay = []; function checkForMatch() { this.setAttribute('src', cards[cardId].cardImage); if (cardsInPlay.length === 2) { if (cardsInPlay[0] === cardsInPlay[1]) { console.log("You found a match!"); } else { console.log("Sorry, try again."); } } } function flipCard() { const cardId = this.getAttribute('data-id'); console.log("User flipped " + cards[cardId].rank); console.log(cards[cardId].cardImage); console.log(cards[cardId].suite); cardsInPlay.push(cards[cardId].rank); checkForMatch(); } function createBoard() { for (let i = 0; i < cards.length; i++) { let 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();
【问题讨论】:
-
当你调用一个函数时,被调用的函数不会继承调用者中可用的变量。查看 parameters 以获取从
flipCard到checkForMatch的cardId的值。
标签: javascript function object