Aussi loin que je connaisse document.getElementyID ('myid') recherchera uniquement des éléments HTML déjà dans le document. Disons que j'ai créé un nouvel élément via JS, mais que je ne l'ai pas encore ajouté à l'organisme du document, est-il possible d'accéder à cet élément par son identifiant comme je le ferais normalement avec GetElementyID?
var newElement = document.createElement('div'); newElement.id = 'myId'; // Without doing: document.body.appendChild(newElement); var elmt = document.getElementById('myId'); // won't work
4 Réponses :
GetElementyID est une méthode sur l'objet Document. Cela ne retournera rien dans le document. P>
sur ne pas stocker une référence, hein? Si vous pouviez le tirer comme par magie de l'air par ID, l'air serait une référence à celle-ci. P>
Si cela ne fait pas partie du document, vous ne pouvez pas l'accrocher à l'aide de Si vous devez faire référence à l'élément ultérieurement, passez simplement la référence à une autre fonction - Tous les objets de JavaScript sont passés par référence, alors que vous travaillez sur cet élément DOM flottant à partir d'une autre fonction modifie l'original, pas une copie. < / p> document.getelementByID code>.
GetElementByID CODE> Est-ce que l'élément doit être trouvé dans l'arborescence. Si vous créez un élément DOM flottant, il existe simplement en mémoire et n'est pas accessible depuis le DOM. Il doit être ajouté à la DOM pour être visible. P>
Ok, merci tout! Je pense que, en faisant un document.createeelement («div»), mon élément serait en quelque sorte référencé dans une liste ou une arborescence, avec tous les éléments non annexés ... Donc, je suppose que ce n'est pas le cas et que je devrais avoir à Faites cela sans identifiant.
Si vous avez créé cela, passez simplement l'objet à d'autres fonctions et y accéder directement?
Pour que quiconque trébuche sur cette question à ou après 2019, voici une réponse mise à jour.
La réponse acceptée d'Andrew Noyes est correcte dans ce Toutefois, si vous ne pouvez pas extraire une référence directe à votre élément désiré, envisagez d'utiliser Sélectors . Les sélecteurs vous permettent de récupérer des nœuds qui existent purement en mémoire, par exemple: P> document.getelementByID code> ne fonctionnera pas à moins que l'élément existe dans le document et le code ci-dessus contient déjà une référence à l'élément souhaité de toute façon. P>
var child = document.createElement("div");
child.id = "my_id";
var parent = document.createElement("div");
parent.appendChild(child);
var child2 = parent.querySelector("#my_id");
Si vous avez créé cela, passez simplement l'objet à d'autres fonctions et y accéder directement?
@s_hewitt: Cela ne s'applique pas à l'OP, mais si vous êtes comme moi, vous ne pouvez pas "le transmettre" parce que vous n'avez pas de référence. (Vous avez créé-le à l'aide d'un équivalent de la bibliothèque innerhtml ou de la bibliothèque.) Dans ce cas, vous essayez d'obtenir une référence, mais GetElementyID est localisé inutilement sur le mauvais objet.