ie7中的javascript错误

时间:2010-07-06 20:06:15

标签: javascript internet-explorer-7

我在使用此代码的网页上收到javascript错误。错误是“parentNode是否为null而对象”

错误在此行:theParent.parentNode.removeChild(theParent);

是否有一些其他代码可以用来替换它或者jquery  会改变吗?

var path = location.pathname;

if( path == "/SearchResults.asp" 
 || path == "/ProductDetails.asp" 
 || path.indexOf("-s/") != -1 
 || path.indexOf("_s/") != -1 
 || path.indexOf("_p/") != -1 
 || path.indexOf("-p/") != -1 ) {
    var links = document.getElementById("content_area")
                        .getElementsByTagName("a");
    var homeLink;
    for (var i = 0; i < links.length; i++) {
        if (links[i].innerHTML.match("Home")) {
                homeLink = links[i];
                break;
        }
    }
    var theParent = homeLink.parentNode;
    theParent.parentNode.removeChild(theParent);
}

4 个答案:

答案 0 :(得分:1)

尝试

if (theParent) { theParent.parentNode.removeChild(theParent); }

因为看起来你可能找不到innerHTML,“Home”或者因为其他原因没有创建theParent。

HTML会有所帮助,只是为了确保Home存在并且它有一个祖父母。

答案 1 :(得分:1)

你得到“ parentNode是否为null而对象”似乎很奇怪:

var theParent = homeLink.parentNode;

如果有的话,只需将theParent设置为null并继续。或者,homeLink需要成为错误的原因,这不是IE所抱怨的。

然而,下一行...

theParent.parentNode.removeChild(theParent);

...如果parentNodenull,我可以看到引发错误,因为null无法使用removeChild等方法。

您可以尝试修改以下内容,以了解成功率:

if (theParent.parentNode == null) // == for null or undefined by coercion
    theParent.parentNode.removeChild(theParent);
else
    throw new Error('Node could not be removed as parentNode is unknown.');

或者,请忽略elsethrow让它无声地失败。

答案 2 :(得分:0)

您的循环似乎无法找到文字Home的链接。您是否尝试过检查homeLink是否为空?

答案 3 :(得分:0)

看起来homeLink为null或parentNode为null。你可以在firefox + firebug中运行它并设置断点吗?