Metoda getElementsByTagName()
vrací objekt HTMLCollection
.
Objekt HTMLCollection
je seznam (kolekce) prvků HTML podobný poli.
Následující kód vybere všechny prvky <p>
v dokumentu:
const myCollection = document.getElementsByTagName("p");
K prvkům v kolekci lze přistupovat pomocí indexového čísla.
Pro přístup k druhý prvek <p>, který můžete napsat:
myCollection[1]
Zkuste to sami →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript HTML DOM</h2>
<p>Hello World!</p>
<p>Hello Norway!</p>
<p id="demo"></p>
<script>
const myCollection = document.getElementsByTagName("p");
document.getElementById("demo").innerHTML = "The innerHTML of the second paragraph is: " + myCollection[1].innerHTML;
</script>
</body>
</html>
Poznámka: Index začíná na 0.
Vlastnost length
definuje počet prvků v kolekci HTML
:
myCollection.length
Zkuste to sami →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript HTML DOM</h2>
<p>Hello World!</p>
<p>Hello Norway!</p>
<p id="demo"></p>
<script>
const myCollection = document.getElementsByTagName("p");
document.getElementById("demo").innerHTML = "This document contains " + myCollection.length + " paragraphs.";
</script>
</body>
</html>
Vlastnost length
je užitečná, když chcete procházet prvky v sbírka:
Změňte barvu textu všech prvků <p>:
const myCollection = document.getElementsByTagName("p");
for (let i = 0; i < myCollection.length; i++) {
myCollection[i].style.color = "red";
}
Zkuste to sami →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript HTML DOM</h2>
<p>Hello World!</p>
<p>Hello Norway!</p>
<p>Click the button to change the color of all p elements.</p>
<button onclick="myFunction()">Try it</button>
<script>
function myFunction() {
const myCollection = document.getElementsByTagName("p");
for (let i = 0; i < myCollection.length; i++) {
myCollection[i].style.color = "red";
}
}
</script>
</body>
</html>
HTMLCollection NENÍ pole!
Může vypadat HTMLCollection jako pole, ale není.
Můžete procházet seznam a odkazovat na něj prvky s číslem (stejně jako pole).
Nemůžete však použít metody pole jako valueOf(), pop(), push(), nebo join() na HTMLCollection.