Javascript 无法读取未定义的属性“x”。json文件中的第二级
问题:由于某种原因,无法在JSON文件中呈现第二级,但第一级可以工作。第二级是给我未定义的错误。请帮忙 HTML:Javascript 无法读取未定义的属性“x”。json文件中的第二级,javascript,json,Javascript,Json,问题:由于某种原因,无法在JSON文件中呈现第二级,但第一级可以工作。第二级是给我未定义的错误。请帮忙 HTML: 示例:数组中的第一项没有促销字段。这将抛出未定义的错误。在尝试访问该字段或创建默认值之前,请检查该字段是否存在 检查 违约 此外,还应该将循环结构更改为a for var i=0;i
示例:数组中的第一项没有促销字段。这将抛出未定义的错误。在尝试访问该字段或创建默认值之前,请检查该字段是否存在 检查 违约 此外,还应该将循环结构更改为a for var i=0;i
工作小提琴-除了不是数据中的所有对象都具有完全相同的数据结构之外,我还将更改for循环中的for。。。在模式中转换为迭代变量,因为您是在数组上迭代,而不是在javascript对象上枚举。换言之:
for(var e=0; e < items.length; e++)
及
这里有一些关于为什么不使用的更多信息。。。在数组模式中:请在问题中提供问题/JSON/代码的示例我创建了一个JSFIDLE,并创建了问题。使用HTML、JSON和JS。请在您的问题中包括JSON/JS,而不仅仅是JSFIDLE。JSFIDLE可以包含一个更完整的示例,但您的问题可以提供一个代码和JSON的简化示例。我希望这就是你的意思。谢谢您的第一项没有促销会员。如果查看调试器,它很可能会告诉您var promoPriceValue=item.Promo.Price抛出错误,因为item.Promo未定义,请尝试item.Promo?item.Promo.Price:“无促销”。请记住调试器是您的朋友。这是一个很好的链接,可以解释for…in问题+1thanks@Jason..我已经尝试过这个方法,如果所有JSON都有相同的字段,它就可以完美地工作。例如,数组中的第一项没有“Promo”,直到我在第一个字段中添加了“Promo”,您的方法才起作用。谢谢,我会再次检查
var data = [
{
"word": "hello",
"favnumber": "0070",
"item": "item1",
"color": "red"
},
{
"word": "hello world",
"favnumber": "0233070",
"item": "item2",
"color": "blue",
"Promo": {
"Price": 3.99
}
},
{
"word": "hello mom",
"favnumber": "0070",
"item": "item3",
"color": "pink",
"Promo": {
"Price": 4.99
}
},
{
"word": "hello dad",
"favnumber": "0070",
"item": "item4",
"color": "silver",
"Promo": {
"Price": 8.99
}
}
];
var items = document.querySelectorAll('[data-item]');
for (var e in items) {
var element = items[e];
var name = $(element).attr('data-item');
for (var i in data) {
var item = data[i];
if (name == item.item) {
var colorValue = item.color
var promoPriceValue = item.Promo.Price //this doesn't work//
$(element).find('p').text(colorValue)//this works//
$(element).find('span').text(promoPriceValue)
}
}
}
if(item.Promo) {
var promoPriceValue = item.Promo.Price
}
var promoPriceValue = item.Promo ? item.Promo.Price : 10.99
for(var e=0; e < items.length; e++)
for(var i=0; i < data.length; i++)