2012-06-09 14 views
10

Por ejemplopara cada tipo de elemento en el cuerpo

For each div in body 
      div.innerHtml = "poo" 
next div 

esto es, obviamente, pseudo código, pero demuestra lo que estoy tratando de hacer.

+2

contesté su pregunta, pero usted debe hacer la tarea primera ... – gdoron

Respuesta

23
var elements = document.getElementsByTagName('div'); 

for (var i = 0; i < elements.length; i++) { 
    elements[i].innerHTML = "foo"; 
}​ 

Live DEMO

Si desea buscar sólo en el <body>:

var elements = document.body.getElementsByTagName('div'); 

for (var i = 0; i < elements.length; i++) { 
    elements[i].innerHTML = "foo"; 
}​ 
+1

'document.getElementsByTagName ('cuerpo') [0] === document.body';) –

+2

@amnotiam. Sí, eso fue estúpido ... :) gracias. – gdoron

1

Una versión alterna con el nuevo método Array.from() y arrow functions en ES2015:

Array.from(document.body.getElementsByTagName("div")).forEach(a=>a.innerHTML='foo');
<div></div> 
 
<div></div> 
 
<div>Test</div> 
 
<div></div> 
 
<div>Hello</div> 
 
<div>World</div>

Si el tamaño es absolutamente crucial para usted, entonces esta solución es sólo 84 bytes, en comparación con 113 para la respuesta de @Roko y 120 para @ gdoron's.

En ese caso, podría acortar este jQuery mucho más:

$("body div").html('foo');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<div></div> 
 
<div></div> 
 
<div>Test</div> 
 
<div></div> 
 
<div>Hello</div> 
 
<div>World</div>

Ahora sólo 26 bytes!

+0

Interesantes ejemplos, pero no se puede hablar sobre * size * y jQuery porque es una biblioteca sobre JS y * tiene su tamaño * por sí mismo. Pulgares arriba para la versión JS BTW (aunque usaría querySelectorAll;) –

2

Trabajo fácil:

NodeList.prototype.forEach = HTMLCollection.prototype.forEach = Array.prototype.forEach; 

Y ahora:

// VanillaJS/JavaScript puro 
var lista_de_divs = document.querySelectorAll('div') 
lista_de_divs.forEach(function (div, i) { 
    // código... 
    console.log(i, div) 
}) 


// jQuery 
$('div').forEach(function (div, i) { 
    // código... 
    console.log(i, div) 
}) 
Cuestiones relacionadas