Javascript getElementById base sur la chaîne partielle
J'ai besoin d'obtenir l'ID d'un élément, mais la valeur est dynamique avec seulement le début est le même toujours.
Heres un extrait du code.
<form class="form-poll" id="poll-1225962377536" action="/cs/Satellite">
L'ID commence toujours avec le sondage de-' puis les chiffres sont dynamiques.
Comment puis-je obtenir l'ID à l'aide de JavaScript et pas jQuery?
- s'il vous plaît montrer un exemple de balisage pour plus de clarté
- Voulez-vous que l'id de l'élément ou de l'élément avec l'id?
- Je veux obtenir l'ID de l'élément.
- Si ce n'est votre propre code de site web, je vous recommande de donner à chacun de ces éléments d'une classe. Il faudra encore un certain degré de code, mais il y a beaucoup de pré-construit fonctions pour getElementsByClassName. Certains navigateurs modernes prennent en charge en natif de ladite fonction.
getElementsByClassName
n'est pas tout à fait pré-construit. Si vous voulez qu'il fonctionne correctement sous IE (au moins, les anciennes versions d'IE...c'est peut-être été corrigé dans les versions plus récentes), alors vous devez le corriger vous-même.- Par prédéfinis, je voulais dire que vous pouvez trouver un extrait de code que vous pouvez simplement copier et coller pour ajouter la prise en charge. Le terme que vous faites allusion à l'est de la prise en charge native.
- Double Possible de Sélecteur jQuery: Id se Termine Avec?
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser la querySelector pour que:
Le sélecteur de moyens: obtenir un élément où l'attribut
[id]
commence par la chaîne"poll-"
.^
coïncide avec le début*
correspond à n'importe quelle position$
correspond à la finjsfiddle
querySelectorAll
est grande. Saufdocument.querySelectorAll('[id^="poll-"]')
renvoie une liste. Nous devons rechercher la liste pour obtenir l'id au lieu d'utiliserdocument.querySelectorAll('[id^="poll-"]').id
.$
correspond à la fin et*
correspond à n'importe quelle position. Dans votre cas, il seraitid$="dynamic_constant"
.id='user-123456-image'
*
:id*='user-123456-image'
.[id^=user-][id$=-image]
🙂De l'essayer.
Exemple de Balisage HTML.
L'appeler comme
Démo ici: http://jsfiddle.net/naveen/P4cFu/
Étant donné que ce que vous voulez, c'est de déterminer l'id de l'élément de base sur tout le préfixe, vous allez avoir à faire une recherche de l'ensemble DOM (ou au moins, une recherche de toute une sous-arborescence si vous connaissez un élément qui est toujours garanti pour contenir votre élément cible). Vous pouvez le faire avec quelque chose comme:
Voici un exemple: http://jsfiddle.net/xwqKh/
Être conscient que la dynamique des id d'éléments comme ceux que vous travaillez avec sont généralement utilisés pour garantir l'unicité des id d'éléments sur une seule page. Ce qui signifie qu'il est probable qu'il y a plusieurs éléments qui partagent le même préfixe. Vous souhaiterez probablement de les trouver tous.
Si vous voulez trouver tous les éléments qui ont un préfixe, au lieu de simplement la première, vous pouvez utiliser quelque chose comme ce qui est démontré ici: http://jsfiddle.net/xwqKh/1/
Je ne suis pas entièrement sûr que je sais ce que vous demandez, mais vous pouvez utiliser les fonctions de chaîne pour créer l'ID correspondant à ce que vous cherchez.
Si vous ne connaissez pas l'ID correspondant, alors vous ne pouvez pas rechercher l'objet avec getElementById, il faut trouver une autre manière (par le nom de classe, par type de balise, par attribut, par les parents, par enfant, etc...).
Maintenant que vous avez enfin nous a donné un peu de HTML, vous pouvez utiliser cette plaine JS pour trouver tous les éléments de forme qui ont un ID qui commence par "sondage":
L'ID commence toujours par " post -", puis les chiffres sont dynamiques.
Veuillez vérifier votre id de noms, "sondage" et "post" sont très différentes.
Comme déjà répondu, vous pouvez utiliser querySelector:
mais querySelector ne trouverez pas de "sondage" si vous gardez l'interrogation de "post":
'[id^="post-"]'
Vous aurez probablement à donner une constante de la classe et de l'appel
getElementsByClassName
, ou peut-être juste utilisergetElementsByTagName
, et la boucle dans vos résultats, de vérifier le nom.Je vous suggère de regarder votre problème sous-jacent et de trouver une façon où vous pouvez connaître le numéro d'identification à l'avance.
Peut-être que si tu as posté un peu plus sur pourquoi vous êtes obtenir cela, nous avons pu trouver une meilleure solution.
Vous utilisez le
id
propriété à obtenir l'id, puis lesubstr
méthode pour supprimer la première partie, puis éventuellementparseInt
pour le transformer en un certain nombre:ou: