2014-10-19 25 views
0

我正在使用imageUploaded.js庫,並在chrome dev中出現錯誤。 我已經粘貼下面的代碼的大片段,但在鉻強調了錯誤的路線是:爲什麼我會在我的腳本中獲取「Uncaught TypeError:無法讀取屬性'nodeName'null」?

if (elem.nodeName === 'img') { 

我瞭解基本的JS,但不能完全地按照所發生的事情在這個庫中,所以我不確定這個錯誤意味着什麼或如何解決它。

ImagesLoaded.prototype = new EventEmitter(); 

    ImagesLoaded.prototype.options = {}; 

    ImagesLoaded.prototype.getImages = function() { 
    this.images = []; 

    // filter & find items if we have an item selector 
    for (var i=0, len = this.elements.length; i < len; i++) { 
     var elem = this.elements[i]; 
     // filter siblings 
     if (elem.nodeName === 'img') { 
     this.addImage(elem); 
     } 
     // find children 
     // no non-element nodes, #143 
     var nodeType = elem.nodeType; 
     if (!nodeType || !(nodeType === 1 || nodeType === 9 || nodeType === 11)) { 
     continue; 
     } 
     var childElems = elem.querySelectorAll('img'); 
     // concat childElems to filterFound array 
     for (var j=0, jLen = childElems.length; j < jLen; j++) { 
     var img = childElems[j]; 
     this.addImage(img); 
     } 
    } 
    }; 
+0

在'ImagesLoaded.prototype.getImages'的頂部放置一個'console.log(this.elements);'。有人向元素列表添加一個「null」而不是實際的元素。 – Rudie 2014-10-19 01:27:47

+0

這意味着您正在嘗試查找'nodeName'的元素/節點不存在。 – 2014-10-19 01:28:13

回答

1

出於某種原因,該元素的值是null,所以它沒有nodeName財產。在沒有看到更多的代碼,或圖書館,這是很難說這是怎麼回事,但是你可以先檢查元素本身的價值避免這樣的錯誤,則該屬性:

if (elem && elem.nodeName === 'img') { 
    ... 
} 

這段代碼的作用:如果elem是虛假的(其中包括null),它會自動將條件放棄爲false(這與邏輯AND的行爲方式相同)。否則,它將繼續檢查nodeName,就像您的原始代碼一樣。

+0

相反,你可能想找到並修復這個bug ... – Rudie 2014-10-19 01:29:12

+1

@Rudie當我激活我的心靈力量......時失敗。我仍然不知道OP沒有發佈的代碼中發生了什麼。如果你這樣做,隨時寫一個更準確的答案。 – Shomz 2014-10-19 01:30:28

+0

需要多長時間?你一定很忙! – Rudie 2014-10-19 01:33:36

相關問題