我在使用此代码的网页上收到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);
}
答案 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);
...如果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
让它无声地失败。
答案 2 :(得分:0)
您的循环似乎无法找到文字Home
的链接。您是否尝试过检查homeLink是否为空?
答案 3 :(得分:0)
看起来homeLink为null或parentNode为null。你可以在firefox + firebug中运行它并设置断点吗?