1
votes

Comment pouvez-vous trouver un élément HTML sur une page uniquement par le nombre de caractères dans son attribut id JavaScript?

Je souhaite utiliser JavaScript pour rechercher un élément HTML spécifique par le nombre de caractères de son attribut id .

Par exemple, si l'élément que je veux trouver ressemble à ceci:

Et a 8 caractères dans son attribut id , comment pourrais-je trouver cet élément.

Un pseudo-code de base, j'imagine, ressemblerait à ceci:

[e] = document.GetElementById où id.charLength == 8

Et cela renverrait un tableau avec tous les éléments de la page dont l'attribut id contient 8 caractères.

Au cas où quelqu'un le demande, je ne peux pas simplement utiliser l ' id pour obtenir l'élément car l' id change à chaque actualisation de la page. Xpath ne fonctionnera pas non plus car l'élément change de position dans le DOM à chaque actualisation. Il n'y a pas non plus d'attributs d'identification constants des parents de l'élément.

La seule constante est la longueur de l'attribut id de cet élément spécifique, et j'ai donc conclu que c'était le seul moyen de saisir l'élément.


0 commentaires

4 Réponses :


0
votes

Essayez Javascript: Comment faire parcourir TOUS les éléments DOM sur une page? pour parcourir tous les éléments, puis définir vos propres critères (pour la longueur de l'ID) pendant cette boucle


0 commentaires

0
votes

Vous pouvez d'abord obtenir tous les éléments dom en utilisant document.getElementsByTagName ("*") , puis utiliser find pour obtenir l'élément dom requis

const domElements = document.getElementsByTagName("*");
const required = [...domElements].find(element => element.id.length === 8);


0 commentaires

1
votes

Vous pouvez utiliser Document.querySelectorAll () avec un sélecteur d'attribut pour trouver tous les éléments de la page qui ont un attribut id (avec n'importe quelle valeur), puis utilisez Array.prototype.filter () (et Array.from () ) pour les filtrer en fonction de leur Longueur de id :

<div></div>
<div id="123"></div>
<div id="456"></div>
<div id="123456"></div>
<div id="987654"></div>
console.log(Array.from(document.querySelectorAll('[id]'))
  .filter(element => element.id.length === 3));
  
console.log(Array.from(document.querySelectorAll('[id]'))
  .filter(element => element.id.length === 6));
  


0 commentaires

0
votes

Voici la solution en pure xpath.

//element[string-length(@id)=8]

entrez la description de l'image ici


0 commentaires