jQuery错误 - 无法调用未定义的方法'indexOf'

时间:2011-10-30 13:06:23

标签: jquery

我有这段代码来解决闪存跳过z-index中所有内容的问题:

$("iframe").each(function(){
    var ifr_source = $(this).attr('src');
    var wmode = "wmode=opaque";
    if(ifr_source.indexOf('?') != -1) {
        var getQString = ifr_source.split('?');
        var oldString = getQString[1];
        var newString = getQString[0];
        $(this).attr('src',newString+'?'+wmode+'&'+oldString);
    }
    else $(this).attr('src',ifr_source+'?'+wmode);
});

出于某种原因,我在indexOf上遇到错误,而且它正在打破网站。但奇怪的是,它并没有完全打破它,只有一个css调整大小我在那里修复。

  

未捕获的TypeError:无法调用未定义的方法'indexOf'

该网站位于:http://syndex.me

很想知道为什么会这样。

2 个答案:

答案 0 :(得分:2)

直接从src获取this。您不需要为此创建一个完整的jQuery对象。

ifr_source = this.src;

作为奖励,this.src返回空字符串,即使未设置属性src,而jQuery的attr返回undefined,您必须先执行检查使用indexOf

答案 1 :(得分:1)

您可能iframe没有声明任何src属性。

这样做可以避免错误:

var ifr_source = $(this).attr('src') || "";

编辑:在这里查看来源确实是:

<iframe id="likeit"></iframe>

第二个想法,添加到这个框架的URL不是个好主意,最好不要管它,所以最终的代码应该是:

var ifr_source = $(this).attr('src') || "";
if (ifr_source.length > 0) {
    var wmode = "wmode=opaque";
    if(ifr_source.indexOf('?') != -1) {
        var getQString = ifr_source.split('?');
        var oldString = getQString[1];
        var newString = getQString[0];
        $(this).attr('src',newString+'?'+wmode+'&'+oldString);
    }
    else
        $(this).attr('src',ifr_source+'?'+wmode);
}