【发布时间】:2021-07-04 00:54:26
【问题描述】:
未捕获的类型错误:无法读取未定义的属性“6” 在 XMLHttpRequest.xhttp.onreadystatechange (main.js:36) 在 HTMLDivElement。
我正在开发一个学习和练习 JavaScript 的小游戏,我想获取存储在 json 文件中的信息,以从我显然使用的对象数组的属性中获取信息:arrayOfObjects[index].propertyOfObject,在我的代码中是 firstNShape.innerHTML = firstShape[randomFirstShape]; 它工作正常但我收到错误:
未捕获的类型错误:无法读取未定义的属性“6” XMLHttpRequest.xhttp.onreadystatechange (main.js:36) 在 HTMLDivElement。
在浏览器的控制台中,我知道错误是什么意思,但我不明白为什么控制台显示“无法读取属性 '6'”,而 6 它是索引,而不是属性,属性是名称, 我是不是做错了什么?
这是我的代码:
const xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function () {
if (this.readyState == 4 && this.status == 200) {
var cardsInfo = JSON.parse(xhttp.responseText);
}
for (let i = 0; i < 2; i++) {
//Choose a random value for card
let randomFirstValue = Math.floor(Math.random() * 13);
let randomFirstShape = Math.floor(Math.random() * 4);
let firstShape = ["♥", "♦", "♣", "♠"];
//create the card
let firstCard = document.createElement("div");
firstCard.classList.add("card");
firstCard.classList.add("cardDisplay");
//Add value to the card
let firstNValue = document.createElement("p");
firstNValue.innerHTML = cardsInfo[randomFirstValue].name;
firstCard.appendChild(firstNValue);
//Add shape to the card
let firstNShape = document.createElement("p");
firstNShape.innerHTML = firstShape[randomFirstShape];
firstCard.appendChild(firstNShape);
//Append card to the card container
cardContainer.appendChild(firstCard);
}
}
这是我的 JSON 文件,它很简单,但我只是为了学习和练习 JSON 和 JS。
[
{
"name": "A",
"value": 1,
"value2": 11
},
{
"name": "2",
"value": 2
},
{
"name": "3",
"value": 3
},
{
"name": "4",
"value": 4
},
{
"name": "5",
"value": 5
},
{
"name": "6",
"value": 6
},
{
"name": "7",
"value": 7
},
{
"name": "8",
"value": 8
},
{
"name": "9",
"value": 9
},
{
"name": "10",
"value": 10
},
{
"name": "J",
"value": 10
},
{
"name": "Q",
"value": 10
},
{
"name": "K",
"value": 10
}
]
【问题讨论】:
-
你能分享一下你的响应 JSON 是什么样子的吗?
-
@Jazz 当然,我要编辑我的问题
-
嗯,我可以看到一些可能导致您的问题的事情。首先,您需要该 if 块中的所有逻辑。即使未设置该变量,您仍在继续。这就是为什么它显示未定义的原因
-
效果很好!我之前尝试过,但我不知道为什么它不起作用,但无论如何,显然我做错了什么。谢谢@爵士乐!!
标签: javascript typeerror javascript-objects google-chrome-console