未捕获的类型错误:未定义没有属性
2021-02-19
6606
谁能帮我解答一下这个问题?尝试打开图片时调用
错误就出在这行代码中
: 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)
}
);
});
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(' ')) || [];
fortunee
2021-02-19