【发布时间】:2017-09-16 20:12:34
【问题描述】:
我刚开始学习 javascipt,在教程中间被这个错误难住了:
我正在尝试创建一个迷你游戏,我可以在其中翻转卡片并找到匹配项。
我有一个数组中的对象,并试图根据选择的卡片(对象)调用“等级”的特定值。
在控制台中运行代码给我一个错误: 未捕获的类型错误:无法读取未定义的属性“等级”。
Javascript:
console.log("Up and running");
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() {
if (cardsInPlay[0] === cardsInPlay[1]) {
alert("You found a match!");
} else alert("Sorry, try again");
}
var flipCard = function(cardId) {
console.log("User flipped " + cards[cardId].rank);
/*issue is with calling the rank*/
console.log(cards[cardId].cardImage);
console.log(cards[cardId].suit);
cardsInPlay.push(cards[cardId].rank);
if (cardsInPlay.length === 2) {
checkForMatch();
};
}
var createBoard = function() {
for (var i = 0; i < cards.length; i ++) {
var cardElement = document.createElement('img');
cardElement.setAttribute("img", "images/back.png");
cardElement.setAttribute("data-id", i);
cardElement.addEventListener("click", flipCard());
document.getElementById("game-board").appendChild(cardElement);
}
}
createBoard();
flipCard(0);
flipCard(2);
我的错误是由于我使用card[cardId].rank从对象调用值的方式吗?
【问题讨论】:
-
flipcard函数需要cardId参数,当你在点击事件上调用
flipcard时你没有传递任何参数,它变成了未定义的。
标签: javascript arrays javascript-objects