2012-06-09 10 views

Odpowiedz

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

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

Live DEMO

Jeśli chcesz szukać tylko w <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. Tak, to było głupie ... :) dzięki. – gdoron

1

alternatywnej wersji z nową metodą Array.from() i arrow functions w 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>

Jeśli rozmiar jest absolutnie kluczowa dla ciebie, to rozwiązanie jest tylko 84 bajtów, w porównaniu do 113 za odpowiedź @ Roko i 120 za @ gdoron.

W takim przypadku, jQuery mógłby skrócić to znacznie więcej:

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

Teraz tylko 26 bajtów!

+0

Interesujące przykłady, ale nie można mówić o * rozmiarze * i jQuery, ponieważ jest to biblioteka na szczycie JS i * ma swój rozmiar * we własnym zakresie. Kciuki w górę dla wersji JW BTW (mimo że użyłbym querySelectorAll;) –

2

łatwe zadanie:

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

A teraz:

// 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) 
}) 
Powiązane problemy