2010-07-06 2 views
0

Я получаю яваскрипта ошибку на странице с этой ошибкой code.The является «ParentNode равна нулю или нет, и объект»Javascript ошибка в 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

У вас есть полная страница, поэтому мы можем проверить это сами? –

ответ

0

Кажется, что ваш цикл не может найти связь с текстом Home. Пробовали ли вы проверить, является ли homeLink нулевым?

0

Похоже, что либо homeLink имеет значение null, либо parentNode равно null. Можете ли вы запустить его в firefox + firebug и установить контрольные точки?

1

Попробуйте

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

Так как, похоже, что вы не можете быть найти innerHTML, «Home» или не создавая theParent по какой-то другой причине.

HTML поможет, только чтобы убедиться, что Home существует и что у него есть родитель.

1

Это кажется странным, что вы получите «ParentNode равно нулю или нет и объекта» с:

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, чтобы она не в состоянии тихо.

+0

моими утверждениями, ошибка находится в файлеParent.parentNode.removeChild (theParent); – user357034