为什么我得到“;未捕获的类型错误:无法读取属性'nodeName'“为空”;在我的剧本中
Why am I getting "Uncaught TypeError: Cannot read property 'nodeName' of null" in my script?
我正在使用imageUploaded.js库,并且在chrome dev中收到一个错误。我在下面粘贴了一个更大的代码片段,但用chrome突出显示的错误行是:
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 );
}
}
};
由于某些原因,元素的值是null
,因此它没有nodeName
属性。如果没有看到更多的代码或库,很难判断发生了什么,但您可以通过首先检查元素本身的值,然后检查属性来避免类似的错误:
if ( elem && elem.nodeName === 'img' ) {
...
}
这个代码的作用:如果elem
是falsy(包括null
),它将自动将条件丢弃为false(这就是逻辑AND的行为)。否则,它将继续检查nodeName
,就像您的原始代码一样。
相关文章:
- 如果文本字段为空,则使用JavaScript应用CSS样式
- ReactJS映射:如何仅在url变量不为空时呈现html链接
- 如果localstorage为空,则显示欢迎消息
- 使用 jQuery 检查所有值是否为空或已填充
- 如果值为空,如何设置输入的默认值?jQuery
- 如何检查元素的内容是否为空,如果为空,请在jquery中删除该元素
- 在MVC 4中,对Controller的Ajax调用为空
- Spring Ajax列表返回,但对象为空
- 输入文本框为空时的阻止按钮asp.网络表单
- $_POST变量为空
- 如果数据为空,Ajax加载不会停止
- 边框颜色是't如果输入为空,则更改
- 如何在输入为空时停止发送
- 如果用户没有更改,则表单值为空
- 在jquery中获取文本输入val始终为空
- 即使 ng 模型有值,也使输入字段为空
- 检查文本区域是否为空总是返回false
- 当所有输入文本字段都为空时,禁止表单提交,但当jquery中的任何字段不为空时允许提交
- ASP.NET dropdownlist在服务器button_click中为空,ddl在客户端填充
- 为什么我得到“;未捕获的类型错误:无法读取属性'nodeName'“为空”;在我的剧本中