Question

Pourquoi NodeList n'est-il pas défini dans IE6 / 7?

<form action="/" method="post" id="testform">
    <input type="checkbox" name="foobar[]" value="1" id="" />
    <input type="checkbox" name="foobar[]" value="2" id="" />
    <input type="checkbox" name="foobar[]" value="3" id="" />    
</form>

<script type="text/javascript" charset="utf-8">
(function () {
    var el = document.getElementById('testform')['foobar[]']
    if (el instanceof NodeList) {
        alert("I'm a NodeList");
    }  
})();
</script>

Cela fonctionne dans FF3 / Safari 3.1 mais pas dans IE6 / 7. Quelqu'un a une idée pour savoir si el est une instance de NodeList sur tous les navigateurs?

Pas de solution correcte

Autres conseils

" Dactylographie Duck " devrait toujours fonctionner:

...

if (typeof el.length == 'number' 
    && typeof el.item == 'function'
    && typeof el.nextNode == 'function'
    && typeof el.reset == 'function')
{
    alert("I'm a NodeList");
}
La réponse de

Adam Franco presque fonctionne. Malheureusement, typeof el.item renvoie différentes choses dans différentes versions d'IE (7: chaîne, 8: objet, 9: fonction). J'utilise donc son code, mais j'ai changé la ligne en type of el.item! == "undefined " " et j'ai remplacé == par === tout au long.

if (typeof el.length === 'number' 
    && typeof el.item !== 'undefined'
    && typeof el.nextNode === 'function'
    && typeof el.reset === 'function')
{
    alert("I'm a NodeList");
}

Je voudrais simplement utiliser quelque chose qui correspond toujours à un certain type. Ensuite, il vous suffit de faire une vérification de type vrai / faux pour voir si vous avez un objet valide. Dans votre cas, je voudrais obtenir une référence à l'élément sélectionné tel que vous êtes maintenant, puis utiliser sa méthode getOptions () pour obtenir une collection HTMLC qui représente les options. Ce type d'objet ressemble beaucoup à un NodeList, vous ne devriez donc avoir aucun problème à le manipuler.

Avec jQuery :

if (1 < $(el).length) {
    alert("I'm a NodeList");
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top