如何解决未捕获的类型错误:未定义没有属性
谁能帮忙解答这个问题?尝试打开图像时调用
错误在这行代码
: 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)
}
);
});
解决方法
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(' ')) || [];
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。