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

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 的属性“选项”

未捕获的类型错误:无法读取未定义的属性“团队”抛出 - 业力

core.js:30235 未捕获类型错误:无法读取未定义的属性“id”

获取未捕获的类型错误:无法读取未定义的属性“toLowerCase”[关闭]