2011-05-05 18 views
25

Hace un tiempo estaba haciendo algunas pruebas en javascript, y jugué con un código para obtener el texto de todos los elementos con cierta clase, Ahora intentaba hacer algo como esto pero obtener todos los elementos por un cierto tipo, por ejemplo todos los elementos type = "text" ¿Hay alguna manera de hacer esto en javascript o debería usar jquery?Accediendo a elementos por tipo en javascript

var xx = document.getElementsByClassName("class"); 
for (i=0;i<xx.length;i++){ 
    var str=xx[i].innerHTML; 
      alert(str); 
} 

de Acción de Gracias

+2

Puede probar document.getElementsByTagName (tagname). Otra cosa es: iQuery es javascript, por lo que cualquier cosa posible con jQuery también es posible sin él. – Jakub

Respuesta

42

En la llanura de edad JavaScript se puede hacer esto:

var inputs = document.getElementsByTagName('input'); 

for(var i = 0; i < inputs.length; i++) { 
    if(inputs[i].type.toLowerCase() == 'text') { 
     alert(inputs[i].value); 
    } 
} 

En jQuery, usted acaba de hacer:

// select all inputs of type 'text' on the page 
$("input:text") 

// hide all text inputs which are descendants of div class="foo" 
$("div.foo input:text").hide(); 
+0

Lo usé para obtener el botón Enviar. –

1

El motor selector de chisporroteo (qué poderes JQuery) está perfectamente preparado para esto:

var elements = $('input[type=text]'); 

O

var elements = $('input:text'); 
35

Si tienes suerte y hay que cuidar sólo para navegadores recientes, se puede utilizar:

document.querySelectorAll('input[type=text]') 

"reciente" significa no IE6 y IE7

+4

Este método está realmente bien soportado ahora: http://caniuse.com/#search=querySelectorAll – thohl

1
var inputs = document.querySelectorAll("input[type=text]") || 
(function() { 
    var ret=[], elems = document.getElementsByTagName('input'), i=0,l=elems.length; 
    for (;i<l;i++) { 
     if (elems[i].type.toLowerCase() === "text") { 
      ret.push(elems[i]); 
     } 
    } 

    return ret; 
}()); 
Cuestiones relacionadas