在IE7

2010-07-06 27 views
0

我得到這個code.The錯誤頁面上的JavaScript錯誤JavaScript錯誤是「parentNode爲空或不和對象」在IE7

的錯誤是在這一行: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

你有完整的頁面,所以我們可以自己測試一下嗎? – 2010-07-06 22:51:43

回答

0

看來你的循環可能沒有找到與文本Home的鏈接。你有沒有嘗試檢查homeLink是否爲空?

0

看起來像homeLink爲null或parentNode爲空。你可以在firefox + firebug中運行它並設置斷點?

1

嘗試

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

,因爲它看起來像你可能不被發現的innerHTML,「主頁」或一些其他原因不能創建所在的當前。

HTML會有幫助,只是爲了確保Home存在並且它有一個盛大的父項。

1

看來奇怪的是,你會得到「parentNode爲空或不和對象」有:

var theParent = homeLink.parentNode; 

如果有的話,它只會設置theParentnull和繼續。或者,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讓它靜靜地失敗。

+0

我的appologies,錯誤是在theParent.parentNode.removeChild(theParent); – user357034 2010-07-06 20:48:37