Sélectionnez à l'aide de div ID générique
Comment sélectionner un div en utilisant son ID, mais avec un widcard?
Si le DIV ID est statusMessage_1098
, je tiens à le sélectionner en quelque sorte, comme document.getElementById('statusMessage_*')
.
C'est parce que jusqu'à ce que la page est générée, je ne sais pas le suffixe de la pièce d'identité et un seul ID sera présent dans une page. Est-ce possible?
Merci pour toute aide.
OriginalL'auteur Nirmal | 2009-12-21
Vous devez vous connecter pour publier un commentaire.
À l'aide de jQuery, vous pouvez le faire
Voir attributeStartsWith
Edit - avec un nom de classe sélecteur de
Si vous pouvez utiliser un nom de classe puis vous pouvez utiliser quelque chose comme cela
obtient tous les éléments div avec la classe de myDivClass'
Désolé, je ne suis pas familier avec le prototype.
Prototype prend en charge le même sélecteur, il suffit d'utiliser $$: prototypejs.org/api/utility/dollar-dollar
Merci!!!! Cela a aidé.
Pour clarifier cela, pour faire ce que l'OP voulait à l'état de Prototype, la commande est: $$("div[id^='statusMessage_']")
OriginalL'auteur rahul
Générique Solution basée sur l'id de l'élément attribut
Oui c'est possible. Cela répond à votre question directement, sans dépendre de tiers JavaScript ou des Api ou des attributs autres que l'id de l'élément. Aussi, vous n'avez pas à utiliser class=
Personnalisé Appel De La Méthode Exemple
Cela devient un tableau contenant tous les éléments ayant un identifiant commençant par "statusMessage_" (même imbriquée).
Exemple de mise en œuvre réutilisables et générique
Voici une implémentation pour la
getElementsByRegex
fonction qui recherche dans les DOM pour la regex, à partir dedocument
. Il est attaché à l'objet document pour des raisons de commodité et selon le comportement attendu.Il y a probablement plus efficace implémentations mais celui-ci fournit un point de départ. Le corps de la fonction peut être remplacé par d'autres algorithmes selon les goûts.
Tester le Code
Enfin, test à l'aide d'un code HTML blurb avoir des éléments imbriqués comme ce
Ce bloc HTML contient trois éléments à partir de
id="statusMessage_
; par conséquent, le test d'alerte va direAdditif Info pour les Variations
Si vous voulez limiter la recherche aux seuls éléments div ou un autre type d'élément spécifique, alors vous voudrez pour injecter le suivant
getElementByTagName
code dans l'algorithme de restreindre l'ensemble des éléments de la recherche contre.Vous pouvez modifier l'algorithme générique en passant le nom de la balise dans un deuxième argument du filtre avant de lancer la recherche commence comme cela
OriginalL'auteur John K
Juste pensé qu'il valait la peine de mettre à jour le fil avec les plus récentes sur la façon de le faire en JavaScript, était encore à venir dans les recherches.
caniuse.com listes elle peut être utilisée sur les numéros de IE8 et un grand soutien dans d'autres navigateurs.
Merci pour cette réponse. Si on a besoin d'obtenir plusieurs éléments
document.querySelectorAll()
peut être utilisé.OriginalL'auteur itsvicki
En jquery, le plus simple est d'attribuer une classe pour chaque div laisser dire "statusMessage'
quelque chose comme:
Pour tous:
Sans jquery:
OriginalL'auteur jerjer
Il suffit de remplacer
document.getElementById (divs[i].id).style.display = "none";
avec ce CSS que vous souhaitez appliquer à tous les divs qui ont un id qui commence avec statusMessage_.OriginalL'auteur bjd223
Je ne suis pas sûr de savoir comment vous êtes peuplant mais si c'est à partir du code-behind, vous pouvez essayer quelque chose comme:
où generatedID est l'IDENTIFIANT généré à partir du code derrière.
OriginalL'auteur James_2195
Manière habituelle de le faire dans le css est de donner les éléments de la classe statusMessage' en plus de leur id unique. Ensuite, vous pouvez créer une règle css avec un sélecteur qui va affecter tous les éléments de cette classe. Par exemple
Rappelez-vous que les éléments peuvent avoir plus d'une classe. Par exemple
OriginalL'auteur Larry K
Si vous ne souhaitez pas utiliser jQuery, il y a un autre moyen plus simple pour cela:
Attribuer un
class
- pour un exemple de nom de "message", et utiliser les éléments suivants:Ici comment vous l'appelez:
OriginalL'auteur Ramiz Uddin