关于Uncaught TypeError需要修复:无法读取未定义

时间:2016-07-21 16:12:22

标签: javascript jquery casting substr

以下脚本当前用于提取URL并在鼠标悬停时执行图像交换。但是,我目前正在收到未被捕获的类型错误:

  

无法读取未定义

的属性'substr'

代码是:

<script>
jQuery(document).ready(function(){
    jQuery('.hover_box_wrapper').mouseenter(function(){
        var img_src = jQuery(this).parent().parent().parent().find('.hover2 img').attr('src');
        var img_src_s= img_src.substring(0,img_src.lastIndexOf("?"));
        var img_href = jQuery(this).parent().attr('href');
        var img_src_set = jQuery(this).parent().parent().parent().find('.hover2 img').attr('srcset');
        var src = jQuery('.center123').find('img').attr('src');
        var res = src.split(" ");
        var src_first = res[0];
         src_first = src_first.substring(0,src_first.lastIndexOf("?")); 

        jQuery('.center123').find('img').attr('src',img_src_s);
        jQuery('.center123').find('img').attr('srcset',src_first);

        //var img_html = jQuery('.center123').find('.vc_single_image-wrapper').html();
        //jQuery('.center123').find('.vc_single_image-wrapper').html('');
        jQuery('.center123').find('.vc_single_image-wrapper').html('<a href="'+ img_href + '"><img src="'+ img_src_s+'" srcset="'+ src_first +'" /></a>');
    });
});

1 个答案:

答案 0 :(得分:0)

如果你要逐行调试,那么你在这段代码中隐藏了错误:

var src = jQuery('.center123').find('img').attr('src');
var res = src.split(" ");
var src_first = res[0];

如果找到没有元素,您将找不到src个属性,这等于undefined变量中存储的src_first值。

您需要对结果进行额外检查,该结果存储在res[0]中。 split(" ")仅适用于{String}类型,无法应用于undefined

最简单的附加检查可以编码如下:

// ...
var src = jQuery('.center123').find('img').attr('src');
if (! src) { // <== here's the additional check, the simplest case possible
    return;
}
var res = src.split(" ");
var src_first = res[0];
// ...