2010-07-06 7 views
0

Je reçois une erreur javascript sur une page avec cette erreur code.The est « parentNode est nulle ou non et objet »javascript erreur dans IE7

L'erreur est dans cette ligne: theParent.parentNode.removeChild(theParent);

Y at-il un autre code que je peux utiliser pour remplacer cela ou jquery que fonctionnera à la place?

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

Avez-vous une page complète pour que nous puissions la tester nous-mêmes? –

Répondre

0

Il semble que votre boucle ne peut être trouver un lien avec le texte Home. Avez-vous essayé de vérifier si homeLink est nul?

0

On dirait que homeLink est nul ou le parentNode est null. Pouvez-vous l'exécuter dans firefox + firebug et définir des points d'arrêt?

1

Essayez

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

Depuis, il semble que vous ne pouvez pas être trouver le innerHTML, « Home » ou ne pas créer theParent pour une autre raison.

Le HTML aiderait, juste pour s'assurer que Home existe et qu'il a un grand parent.

1

Il semble étrange que vous obtiendrez « parentNode est nulle ou non et l'objet » avec:

var theParent = homeLink.parentNode; 

Si quoi que ce soit, il serait tout simplement mis theParent à null et continuer. Ou, homeLink devrait être la cause de l'erreur, ce qui n'est pas ce dont IE se plaint.

Cependant, la ligne suivante ...

theParent.parentNode.removeChild(theParent); 

... Je pouvais voir jeter l'erreur mentionnée si parentNode était null, puisque null ne peut pas avoir des méthodes, telles que removeChild.

Vous pouvez essayer de réviser la ligne à quelque chose comme ce qui suit pour avoir une idée du taux de réussite:

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.'); 

Ou, laissez le else et throw laisser échouer en silence.

+0

mes appologies, l'erreur est dans theParent.parentNode.removeChild (theParent); – user357034