开发者问题收集

未捕获的类型错误:未定义没有属性

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