2017-10-11 88 views
-2

我一直在尋找堆棧溢出,但似乎無法得到一個很好的答案,他們中的很多人似乎在說嘗試&捕獲,但我想知道如果它的一個範圍錯誤範圍錯誤?無法讀取未定義錯誤的屬性'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」屬性。

在此先感謝!

+0

什麼是'data.News.content'?什麼是'新聞'? 「新聞」與「data.News」有什麼不同?顯然,data.News.content [i]沒有定義爲至少有一個值爲'0 <= i Phil

+0

更多問題...... 1)爲什麼在循環內重新分配'news'?您每次都將它設置爲相同的值,這只是多餘的。 2)你在'news_new'字符串中缺少連接運算符('+')。 3)鑑於'news'似乎是某種數組對象,你應該試圖訪問'news.title'還是它是'single.title'? – Phil

+0

我也相當肯定你的(編輯)問題中的代碼不可能產生錯誤*「不能讀取未定義的屬性」show_item「* *,除非你的'data.news.content'數組包含'undefined'條目 – Phil

回答

0

如果我不得不把你實際上是試圖做的,並假定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

0

當您應該迭代到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>'); 
    } 
    } 
} 
+1

'我<= news.length - 1' ==='我 Phil

+0

你真的不需要'var news = data.News.content'內循環 – Phil

相關問題