2009-06-15 12 views
13

Ho il codice followng:Ottenere elementi di una stringa id parziale JavaScript

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

devo aggiungere ora qualche logica soltanto disabilitare gli ingressi che hanno e Id del modulo "bretelle *" dove il pettorale può essere qualsiasi personaggio. Ho visto altre domande dove questo è fatto con jquery ma non posso usare jquery solo semplice javascript. Qualsiasi aiuto sarebbe apprezzato.

Grazie

+2

Sii più preciso. "pettorale" può essere un personaggio qualsiasi? Intendi * può essere un personaggio qualsiasi? in modo che il bibo corrisponda ma la bibliografia no? –

+0

Puoi usare selettori di attributo di stile CSS? Immagino document.getElementsByTagName ('[id^= bib]'); funzionerebbe. – Eytan

risposta

17

Questa è roba piuttosto di base.

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

Invece di scorrerli tutti in ogni momento ... inserisci gli elementi in una matrice in modo che il ciclo successivo sia più veloce. – TJR

+1

TJ, sarebbe utile se il codice è in esecuzione più di una volta e vi è un numero relativamente piccolo di elementi corrispondenti. –

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

Non ho provato io stesso, ma sarebbe attributo di stile CSS selettori?

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

per me questo restituisce sempre una raccolta HTMLElement senza elementi, nonostante abbia molti elementi che iniziano con "bib" (o qualunque cosa abbia sostituito quei caratteri con) – Michael

Problemi correlati