2012-06-09 12 views
10

Per esempioper ogni tipo di elemento nel corpo

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

Si tratta ovviamente di codice pseudo ma dimostra quello che sto cercando di fare.

+2

ho risposto alla tua domanda, ma si dovrebbe fare i compiti prima ... – gdoron

risposta

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

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

Live DEMO

Se si vuole guardare solo nel <body>:

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

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

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

+2

@amnotiam. Sì, è stato stupido ... :) grazie. – gdoron

1

Una versione alternativa con il nuovo metodo Array.from() e arrow functions in 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>

Se la dimensione è assolutamente cruciale per voi, allora questa soluzione è solo 84 byte, rispetto al 113 per @ risposta di Roko e 120 per @ gdoron's.

In tal caso, jQuery potrebbe ridurre questo di gran lunga più:

$("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>

Ora solo 26 byte!

+0

Esempi interessanti, ma non si può parlare di * size * e jQuery perché è una libreria su JS e * ha la sua dimensione * su se stessa. Complimenti per la versione JS di BT (anche se userei querySelectorAll;) –

2

lavoro facile:

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

E ora:

// 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) 
}) 
Problemi correlati