7
votes

C'est-à-dire ne supporte pas 'insertion avant'

J'ai un problème avec cette pièce de code: xxx

in IE j'ai une erreur:

script438: L'objet ne prend pas en charge la propriété ou la méthode 'insert avant'

existe-t-il un moyen de résoudre ce problème?


1 commentaires

Recherche, j'ai trouvé ceci Stackoverflow.com/questions/5172202/...


3 Réponses :


12
votes

Utilisez-le comme ça: xxx pré>

sinon parent sera global, mais il existe toujours un objet parent global, le Parent fort> fenêtre (et il est en lecture seule). P >

en outre: strong> Ie nécessite comme 2e argument un nœud ou une null valide, alors assurez-vous que le parent a des enfants à éviter les erreurs: P>

parent.insertBefore(child,(parent.hasChildNodes())
                            ? parent.childNodes[0]
                            : null);


1 commentaires

(parent.haschildnodes ())? Parent.ChildNodes [0]: NULL peut être raccourci à parent.childnodes [0] || null



5
votes

Insérer avant fonctionne correctement dans Ie tant que le 2e paramètre est un élément DOM valide ou null ( type de null / code> est objet est un type typeof dOM).

pour un tableau , tout index sortant (qui dans lequel Ce cas est 0 comme les enfants [] est vide) retournera non défini . C.-à-d. Arrête de fonctionner dans le cas suivant car le 2nd param devient non défini - xxx

donc, une meilleure approche de ce cas sera xxx


0 commentaires

0
votes

Comme il a été mentionné ci-dessus, .insert avant code> fonctionne uniquement avec noeud valide (identifiant explicite ou référence globale). La référence de variable locale échouerait:

parent.insertBefore(child, parent.all[1]); //must be a child
parent.insertBefore(child, parent.children[2]); //any sane index
parent.insertBefore(child, parent.firstChild); //if at least one child exists
parent.insertBefore(child, parent.lastChild); //if at least one child exists
parent.insertBefore(child, localref.nextSibling]); //if not last child
parent.insertBefore(child, localref.previousSibling]); //if not first child


1 commentaires

Bien que ce code puisse résoudre la question, y compris une explication de la manière et pourquoi cela résout le problème aiderait vraiment à améliorer la qualité de la qualité. de votre message et aboutit probablement à plus de votes ultérieurs. N'oubliez pas que vous répondez à la question pour les lecteurs à l'avenir, pas seulement la personne qui demande maintenant. S'il vous plaît Modifier Votre réponse Pour ajouter des explications et donner une indication de quelles limitations et hypothèses s'appliquent.