2012-02-24 15 views

Respuesta

46

document.getElementsByClassName(klass)

Tenga en cuenta que algunos motores (en particular los navegadores antiguos) no lo tienen. Puede considerar usar una cuña, si ese es el caso. Será lento e iterará sobre todo el documento, pero funcionará.

1

En some browsers hay una función document.getElementsByClassName(class). De lo contrario, la única opción que tiene es iterar sobre todos los elementos en el documento comprobando cada uno de ellos contra su condición de tener el nombre de clase requerido.

15
document.getElementsByClassName('your class'); 

o usted puede construir su nombre de clase de esta manera, si eso no funciona prueba este

if (!document.getElementsByClassName) { 
    document.getElementsByClassName=function(cn) { 
     var allT=document.getElementsByTagName('*'), allCN=[], i=0, a; 
     while(a=allT[i++]) { 
      a.className==cn ? allCN[allCN.length]=a : null; 
     } 
     return allCN 
    } 
} 
1

Esto debería funcionar:

function(className) 
{ 
    var matchingItems = []; 
    var allElements = document.getElementsByTagName("*"); 

    for(var i=0; i < allElements.length; i++) 
    { 
     if(allElements [i].className == className) 
     { 
      matchingItems.push(allElements[i]); 
     } 
    } 

    return matchingItems; 
} 
+0

Sí pero no sugieren que lo utilizan De esta forma, utilicé el intento de hacer algo como esto y luego obtuve un gran problema de rendimiento en IE7, ya que funciona muy lento –

+0

Estoy de acuerdo. Seguramente hay soluciones más elegantes. Veo que @Kunal a continuación está usando expresiones regulares que también son más limpias. Solo estaba proporcionando una opción rápida para que el solicitante pudiera tener una idea. – spinon

+1

Esto no funcionará si se aplican dos clases al elemento –

0
 

function getElementsByClassName(oElm, strTagName, strClassName){ 
    var arrElements = (strTagName == "*" && oElm.all)? oElm.all : 
     oElm.getElementsByTagName(strTagName); 
    var arrReturnElements = new Array(); 
    strClassName = strClassName.replace(/\-/g, "\\-"); 
    var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)"); 
    var oElement; 
    for(var i=0; i<arrElements.length; i++){ 
     oElement = arrElements[i];  
     if(oRegExp.test(oElement.className)){ 
      arrReturnElements.push(oElement); 
     } 
    } 
    return (arrReturnElements) 
} 

 
+0

Esto es similar a un fragmento de código en un libro de punto de sitio. Solo curiosidad si esa es la fuente, ¿o es solo una extraña coincidencia? – pqsk

34

Un simple y una manera fácil

var cusid_ele = document.getElementsByClassName('custid'); 
for (var i = 0; i < cusid_ele.length; ++i) { 
    var item = cusid_ele[i]; 
    item.innerHTML = 'this is value'; 
} 
+0

Al avanzar, el ciclo saltará cada segunda entrada si los elementos se eliminan en el ciclo. Entonces, mejor retrocede. (Edité la respuesta en consecuencia, pendiente de revisión por pares). –

Cuestiones relacionadas