j'ai cette variable
formEditable = $("#formid").getElementsByTagName("input");
je la veux comme ça
formEditable = document.getElementById("formid").getElementsByTagName("input");
3 Réponses :
Vous pouvez utiliser une seule chaîne de sélection à la place:
$("#formid")[0].getElementsByTagName("input");
Cela vous donnera une collection jQuery de tous les éléments input
qui sont les descendants du # formidable
.
Si vous deviez utiliser getElementsByTagName
à la place, extrayez l'élément du $ ("# formid" )
collection d'abord:
const inputsInsideForm = $('#formid input');
Cela vous donnera une HTMLCollection en direct de ces entrées.
Mais ID est unique et $ ("# formid") [0]
fait quoi? Prend le premier identifiant d'un identifiant? Si getElementsByTagName ("input") [0]
- oui, c'est OK, car il renvoie un tableau.
Oui, les ID sont (ou devraient être) uniques, mais $ (selector)
renverra toujours une collection jQuery, pas l'élément sous-jacent. Dans ce cas, la collection jQuery contiendra une seule valeur (mais, en général, les collections jQuery peuvent contenir plus de valeurs, voire zéro). Quel que soit le nombre d'éléments de la collection, [0]
, [1]
, etc. est l'un des moyens d'extraire un élément sous-jacent de la collection - tout comme < code> querySelectorAll
Je veux dire $ ("# formid") [0]
mouvement inutile. $ ("# formid")
renvoie toujours le premier ID. BTW cela génère une erreur .
Ouais, je pense que c'est assez idiot aussi - je préférerais toujours $ ('# formid input');
de loin. Le problème est que vous ne pouvez pas utiliser getElementsByTagName
sur une collection jQuery, et OP essayait d'utiliser getElementsByTagName
(peut-être une partie d'une exigence de devoir?) Alors j'ai inclus cela pour montrer comment il pourrait être utilisé en combinaison avec la méthode jQuery de sélection d'éléments, même si cela semble assez idiot
Oui, l'utilisation d'une méthode jQuery sur quelque chose qui n'est pas une collection jQuery provoquera en effet une erreur. ( $ ("# s") [0]
n'est, bien sûr, pas une collection jQuery, c'est un élément unique. Je ne sais pas ce que vous attendiez là-bas. #formid ") collection first: * dans la réponse signifiait que l'on aura l'élément élément , pas une collection jQuery)
Vous pouvez simplement utiliser le code ci-dessous:
$("#formid").getElementsByTagName("input");
Si vous avez beaucoup de
dans la page, vous devez utiliser
formEditable = document.getElementById("formid").getElementsByTagName("input");
pour des raisons de performances, car les sélecteurs sont évalués de droite à gauche.
Lors de l'utilisation de la requête $ ("# formid input")
, tout d'abord tous les
sont localisés, puis ils sont filtrés en fonction de leur éléments ancêtres, à la recherche d'un ancêtre avec l'ID formid
.
Ce n'est rien d'unique à jQuery, mais votre solution d'origine en tient compte:
// Locate the first element with ID `formid`, // then query its descendants for `<input>` elements. formEditable = $("#formid").find("input");
Notez que les requêtes jQuery renvoient un objet jQuery, pas un DOMNodeList
d'éléments. Ainsi, la variable formEditable
sera un objet jQuery. Pour convertir un objet jQuery en tableau, utilisez la méthode toArray
.
Est-ce que cela répond à votre question? jQuery: obtenir le nom de la balise de l'élément sélectionné