未捕获的TypeError:无法读取未定义的属性'substr'

时间:2014-10-04 15:26:46

标签: javascript jquery 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);
                }
            }

2 个答案:

答案 0 :(得分:3)

尝试

<强> Soultion

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

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

<强>问题

如果vars.currentImage.attr('title')没有title属性,则返回undefined而不是''(空字符串)。并且您正在检查空字符串,因此如果它没有title属性

,它将进入循环内部

因此,您会收到错误,因为substr只能应用于string

答案 1 :(得分:1)

在调用substr()

之前,

检查变量是否为

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