未捕获的类型错误:未定义没有属性
Posted
技术标签:
【中文标题】未捕获的类型错误:未定义没有属性【英文标题】:Uncaught TypeError: undefined has no properties 【发布时间】:2021-05-22 16:27:08 【问题描述】:谁能帮忙解答这个问题?尝试打开图片时调用
错误在这行代码
: srcset[srcset.length - 1])[0];
谢谢
$(document).on('click', '.fancy-srcset', function (e)
e.preventDefault();
var fancyGroup = e.currentTarget.dataset.fancyboxGroup;
var fancyElements = !fancyGroup
? [].slice.call(e.currentTarget.parentElement.children)
: [].slice.call(e.currentTarget.parentElement.parentElement.querySelectorAll('[data-fancybox-group="' + fancyGroup + '"]'));
var size = '400';
['576', '768', '992', '1200'].every(function (screenSize)
if (window.matchMedia('(min-width: ' + screenSize + 'px)').matches)
size = screenSize;
return true;
return false;
);
$.fancybox(
fancyElements.map(function (fancyElement)
var srcset = fancyElement.dataset.srcset.split(', ').map(function (elem)
return elem.split(' ');
);
return (size
? srcset.find(function (elem)
return elem[1] === size + 'w';
)
: srcset[srcset.length - 1])[0];
),
index: fancyElements.indexOf(e.currentTarget)
);
);
enter image description here
【问题讨论】:
当您执行: srcset[srcset.length - 1])[0]
时,srcset
未定义。所以fancyElement.dataset.srcset.split...
返回一个未定义的值,看起来像。
【参考方案1】:
srcset
在某些时候很可能是undefined
。因此,请考虑在发生这种情况时将其初始化为空数组。像这样。
var srcset = fancyElement
.dataset.srcset.split(', ')
.map(function (elem)
return elem.split(' ');
) || [];
使用 ES6 箭头函数
let srcset = fancyElement
.dataset
.srcset.split(', ')
.map((elem) => elem.split(' ')) || [];
【讨论】:
以上是关于未捕获的类型错误:未定义没有属性的主要内容,如果未能解决你的问题,请参考以下文章
React - 未捕获的类型错误:无法读取未定义的属性“func”
未捕获的类型错误:无法读取未定义 javascript 的属性“选项”
未捕获的类型错误:无法读取未定义的属性“团队”抛出 - 业力