Comment vérifier si un objet est une instance d'un NodeList dans IE?
-
02-07-2019 - |
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");
}
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");
}