2009-06-15 10 views
13

mam kod followng:Pierwsze elementy przez częściowego ID string w javascript

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

muszę teraz dodać trochę logiki tylko wyłączyć wejść, które mają i Id w postaci „szelkach *”, gdzie śliniaczek może być dowolną postacią. Ive widziałem inne pytania, gdzie odbywa się to z jquery, ale nie mogę używać jquery tylko prosty javascript. Każda pomoc będzie doceniona.

Dzięki

+2

Bądź dokładniejszy. "bib" może być dowolną postacią? Czy masz na myśli * może być jakąś postacią? tak, że bibo pasuje, ale bibliografia nie? –

+0

Czy możesz użyć selektorów atrybutów stylu CSS? Wyobrażam sobie document.getElementsByTagName ('[id^= bib]'); pracowałbym. – Eytan

Odpowiedz

17

To jest dość podstawowe rzeczy.

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

Zamiast przewijać je wszystkie za każdym razem ... buforuj elementy w tablicy, aby następny cykl był szybszy. – TJR

+1

TJ, byłoby dobrze, gdyby kod działał więcej niż jeden raz, a liczba elementów pasujących jest stosunkowo mała. –

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

nie próbowałem ten sam, ale styl CSS selektorów atrybutów?

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

dla mnie to zawsze zwraca kolekcję HTMLElement bez elementów, pomimo posiadania wielu elementów zaczynających się od "bib" (lub czegokolwiek, co zastąpiłem tymi znakami) – Michael