范围错误?无法读取未定义错误的属性'news_property'
问题描述:
我一直在寻找堆栈溢出,但似乎无法得到一个很好的答案,他们中的很多人似乎在说尝试&捕获,但我想知道如果它的一个范围错误范围错误?无法读取未定义错误的属性'news_property'
function updateNews() {
var news_all = $("#news_all");
var news = data.news.content;
for (i = 0; i <= news.length; i++) {
var num = i + 1
var news = data.news.content;
var single = news[i];
if (single.show_item == true) {
var news_new = '<div class="news-container">' news.title '</div>';
news_all.append(news_new);
}
}
}
scripts.js中:94遗漏的类型错误:无法读取的不确定
我有一个JSON阵列工作性质“show_item”,并那里有一个叫“show_item”属性。
在此先感谢!
答
如果我不得不把你实际上是试图做的,并假定data.news.content
什么是数组一个大的老猜测,它可能看起来像
$('#news_all').append(
data.news.content
.filter(newsItem => typeof newsItem === 'object' && newsItem.show_item)
.map(newsItem => $('<div class="news-container"></div>').text(newsItem.title))
)
有了这个,我过滤掉undefined
条目,并有show_item
设置为false
项。
我然后将过滤后的集合映射到jQuery <div>
对象的数组,并将其文本设置为相关标题。
这个对象集合然后被附加到#news_all
元素。
欲了解更多信息,请参阅
+0
谢谢!成功了!像魅力一样工作 – Edward
答
当您应该迭代到news.length
(案件事项)时,您正在迭代到News.length
。这是造成你news[i]
评估一个是undefined
:
function updateNews() {
var news_all = $("#news_all");
var news = data.News.content;
for (var i = 0; i < news.length; i++) {
if (news[i].show_item == true) {
news_all.append('<div class="news-container">' news.title '</div>');
}
}
}
什么是'data.News.content'?什么是'新闻'? “新闻”与“data.News”有什么不同?显然,data.News.content [i]没有定义为至少有一个值为'0 Phil
更多问题...... 1)为什么在循环内重新分配'news'?您每次都将它设置为相同的值,这只是多余的。 2)你在'news_new'字符串中缺少连接运算符('+')。 3)鉴于'news'似乎是某种数组对象,你应该试图访问'news.title'还是它是'single.title'? – Phil
我也相当肯定你的(编辑)问题中的代码不可能产生错误*“不能读取未定义的属性”show_item“* *,除非你的'data.news.content'数组包含'undefined'条目 – Phil