【问题标题】:javascript error in ie7ie7中的javascript错误
【发布时间】:2010-07-06 20:06:14
【问题描述】:

我在使用此代码的页面上收到一个 javascript 错误。错误是 “parentNode 是否为空且对象”

错误在这一行: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);
}

【问题讨论】:

  • 你有完整的页面,我们可以自己测试吗?

标签: javascript internet-explorer-7


【解决方案1】:

你会得到“parentNode 是否为 null 和 object”,这似乎很奇怪:

var theParent = homeLink.parentNode;

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

但是,下一行...

theParent.parentNode.removeChild(theParent);

...如果parentNode 是null,我可以看到抛出提到的错误,因为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.');

或者,省略 else 和 throw 让它静默失败。

【讨论】:

  • 我的道歉,错误在 theParent.parentNode.removeChild(theParent);
【解决方案2】:

试试

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

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

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多