Il n'est pas judicieux d'utiliser des attributs personnalisés dans le code HTML. S'il y en a, vous devez utiliser HTML5 data
attributs .
Néanmoins, vous pouvez écrire votre propre fonction qui parcourt l'arbre, mais ce sera assez lent par rapport à getElementById
car vous ne pouvez pas utiliser d'index :
function getElementByAttribute(attr, value, root) {
root = root || document.body;
if(root.hasAttribute(attr) && root.getAttribute(attr) == value) {
return root;
}
var children = root.children,
element;
for(var i = children.length; i--; ) {
element = getElementByAttribute(attr, value, children[i]);
if(element) {
return element;
}
}
return null;
}
Dans le pire des cas, l'arbre sera parcouru dans son intégralité. Réfléchissez à la manière de modifier votre concept afin d'utiliser le plus possible les fonctions du navigateur.
Dans les navigateurs plus récents, vous utilisez la fonction querySelector
où il serait simplement :
var element = document.querySelector('[tokenid="14"]');
Ce sera également beaucoup plus rapide.
Mise à jour : Veuillez noter le commentaire de @Andy E ci-dessous. Il se peut que vous rencontriez des problèmes avec IE (comme toujours ;)). Si vous faites beaucoup de récupération d'éléments de ce type, vous devriez vraiment envisager d'utiliser une bibliothèque JavaScript telle que jQuery, comme les autres l'ont mentionné. Elle masque toutes les différences entre les navigateurs.