未捕获类型错误:无法读取未定义的属性'substr'



问题是,我已经编写了jquery.min.js 1.4版本的脚本。之后不得不升级到1.9.1版本,出现了问题。

Uncaught TypeError: Can not read property 'substr' of undefined. 

告诉我该怎么办。发生错误的代码的这一部分。

var processCaption = function(settings){
                var nivoCaption = $('.nivo-caption', slider);
                if(vars.currentImage.attr('title') != ''){
                    var title = vars.currentImage.attr('title');
                    if(title.substr(0, 1) == '#') title = $(title).html();  
                    if(nivoCaption.css('display') == 'block'){
                        nivoCaption.find('p').fadeOut(settings.animSpeed, function(){
                            $(this).html(title);
                            $(this).fadeIn(settings.animSpeed);
                        });
                    } else {
                        nivoCaption.find('p').html(title);
                    }                   
                    nivoCaption.fadeIn(settings.animSpeed);
                } else {
                    nivoCaption.fadeOut(settings.animSpeed);
                }
            }

尝试

来源

如果是undefined或只有whitespace,$.trim()将返回空字符串。

if($.trim($('#abc').attr('title')) != ''){

问题

如果vars.currentImage.attr('title')没有title属性,则返回undefined而不是''(空字符串)。您正在检查空字符串,因此如果它没有标题属性,它就会进入循环

所以您会得到错误,因为substr只能应用于string

在调用substr() 之前检查变量是否为null

if (val1 != null) {
     var val2= val1.substr(6);
     //......
}

相关内容

最新更新