2009-06-15 5 views
13

ich den followng Code haben:Erste Elemente durch eine partielle id Zeichenfolge in Javascript

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

Ich muss jetzt eine gewisse Logik nur hinzufügen, deaktivieren Sie die Eingänge, die und Id der Form „bib *“, wo Lätzchen kann ein beliebiges Zeichen sein. Ich habe andere Fragen gesehen, wo dies mit jQuery gemacht wird, aber ich kann jquery einfach nur javascript verwenden. Jede Hilfe wäre willkommen.

Danke

+2

Genauer gesagt. "bib" kann ein beliebiges Zeichen sein? Meinst du * kann jeder Charakter sein? so dass bibo passt, aber bibliographie nicht? –

+0

Können Sie CSS-Stil-Attributselektoren verwenden? Ich stelle mir document.getElementsByTagName vor ('[id^= bib]'); würde funktionieren. – Eytan

Antwort

17

Das ist ziemlich einfach.

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

Statt jedes Mal durch sie hindurchzublättern ... speichern Sie die Elemente in einem Array, damit der nächste Zyklus schneller wird. – TJR

+1

TJ, das wäre gut, wenn der Code mehr als einmal ausgeführt wird, und es gibt eine relativ kleine Anzahl von übereinstimmenden Elementen. –

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

Ich habe dies selbst nicht ausprobiert, aber CSS Stilselektoren Attribut würde?

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

für mich gibt das immer eine HTMLElement-Sammlung ohne Elemente zurück, obwohl viele Elemente mit "bib" beginnen (oder was auch immer ich diese Zeichen ersetzte) – Michael

Verwandte Themen