【问题标题】: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... 返回一个未定义的值,看起来像。

标签: javascript jquery properties undefined typeerror


【解决方案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(' ')) || [];

【讨论】:

    猜你喜欢
    • 2021-07-10
    • 2015-01-06
    • 2017-02-11
    • 2017-07-26
    • 1970-01-01
    • 1970-01-01
    • 2013-07-04
    相关资源
    最近更新 更多