2009-06-15 5 views
13

J'ai le code followng:Obtenir des éléments par une chaîne identifiant partielle en javascript

var inputs = document.getElementsByTagName("input"); 
for (var i = 0; i < inputs.length; i++) { 
inputs[i].disabled = bDisabled; 
} 

Je dois maintenant ajouter une logique seulement désactiver les entrées qui ont et Id de la forme « bib * » où Le dossard peut être n'importe quel personnage. J'ai vu d'autres questions où cela est fait avec jquery mais je ne peux pas utiliser jquery juste javascript simple. Toute aide serait appréciée.

Merci

+2

Soyez plus précis. "bavoir" peut être n'importe quel personnage? Voulez-vous dire * peut être n'importe quel personnage? alors que le bibo correspond mais pas la bibliographie? –

+0

Pouvez-vous utiliser des sélecteurs d'attribut de style CSS? J'imagine document.getElementsByTagName ('[id^= bib]'); travaillerait. – Eytan

Répondre

17

C'est une chose assez basique.

var inputs = document.getElementsByTagName("input"); 
for (var i = 0; i < inputs.length; i++) { 
    if(inputs[i].id.indexOf("bib") == 0) 
    inputs[i].disabled = bDisabled; 
} 
+0

Au lieu de les parcourir tous à chaque fois ... mettez les éléments en cache dans un tableau afin que le cycle suivant soit plus rapide. – TJR

+1

TJ, ce serait bien si le code s'exécute plus d'une fois, et il y a un nombre relativement petit d'éléments correspondants. –

2
function CheckDynamicValue(partialid, value) { 

    var re = new RegExp(partialid, 'g'); 
    var elems = document.getElementsByTagName('*'), i = 0, el; 
    while (el = elems[i++]) { 
     if (el.id.match(re)) { 
      el.disabled = value; 
     } 
    } 
} 
0

Je n'ai pas essayé moi-même, mais serait style CSS attribuer sélecteurs?

document.getElementsByTagName('[id^=bib]'); 
+0

pour moi cela renvoie toujours une collection HTMLElement sans éléments, en dépit d'avoir beaucoup d'éléments commençant par "bib" (ou tout ce que j'ai remplacé ces caractères) – Michael

Questions connexes