Deo zbornika Učimo Javascript
Selektori DOM elemenata
U Javascriptu postoje razni selektori preko kojih pristupamo DOM elementima. Mi ćemo uglavnom koristiti sledeća tri:
document.getElementById()
document.querySelector()
document.querySelectorAll()
Selektori su uvedeni kao prečice za pristup čvorovima dublje u stablu, do kojih je teže stići kretanjem.
document.getElementById()
Verovatno najčešće korišten selektor je document.getElementById
, koji hvata element preko id
atributa koji smo mu dodelili u HTML-u. U narednom primeru, selektovanim elementima manjamo stil i sadržaj:
<h1 id="naslov">Zdravo Svete</h1>
<div id="prazno"></div>
<script>
const naslov = document.getElementById('naslov')
const prazno = document.getElementById('prazno')
naslov.style.color = 'green'
naslov.innerText = 'Zdravo DOM'
prazno.innerHTML = `
<div>
<h3>Naslov dodat u prazno polje</h3>
<p>Pasus dodat u prazno polje.</p>
</div>
`
</script>
document.querySelector()
document.querySelector
hvata elemente preko standardnih selektora, koje koristimo u CSS-u (preko taga, klase, id-a…). Kada selektor vredi za više elemenata, vraća samo prvi element:
<h3>Zdravo Svete</h3>
<p class="tekst">Lorem ipsum dolor, sit amet consectetur adipisicing elit. Recusandae eaque impedit id, distinctio, quasi aperiam vitae vel eos, cum deserunt dolorum dolores non magni fuga expedita possimus! Modi, quidem vero!</p>
<p class="tekst">Lorem ipsum dolor, sit amet consectetur adipisicing elit. Recusandae eaque impedit id, distinctio, quasi aperiam vitae vel eos, cum deserunt dolorum dolores non magni fuga expedita possimus! Modi, quidem vero!</p>
<h4 id="odjava">Doviđenja Svete</h4>
<script>
document.querySelector('h3').style.color = 'purple'
document.querySelector('.tekst').style.color = 'yellow'
document.querySelector('#odjava').style.color = 'green'
</script>
Za querySelector selektor možemo napraviti alias funkciju, a la jQuery, koju koristimo na sledeći način:
function $(selektor) {
return document.querySelector(selektor)
}
$('h3').style.color = 'purple'
$('.prvi-pasus').style.color = 'yellow'
document.querySelectorAll()
document.querySelectorAll
selektuje više elemenata, kojima potom pristupa unutar petlje:
<p class="tekst">Lorem ipsum dolor, sit amet consectetur adipisicing elit. Recusandae eaque impedit id, distinctio, quasi aperiam vitae vel eos, cum deserunt dolorum dolores non magni fuga expedita possimus! Modi, quidem vero!</p>
<p class="tekst">Lorem ipsum dolor, sit amet consectetur adipisicing elit. Recusandae eaque impedit id, distinctio, quasi aperiam vitae vel eos, cum deserunt dolorum dolores non magni fuga expedita possimus! Modi, quidem vero!</p>
<script>
const pasusi = document.querySelectorAll('.tekst')
for (let i = 0; i < pasusi.length; i++) {
pasusi[i].style.color = 'purple'
}
</script>
Važna napomena: querySelectorAll
ne vraća niz već listu čvorova (nodeList), sa kojom ne možemo koristiti standardne metode nizova, poput map
.
document.getElementsByTagName()
Metod getElementsByTagName()
prima naziv taga i vraća listu čvorova (kolekcija naziv nizu). Na primer, ovako dobijamo broj pasusa na stranici:
document.getElementsByTagName('p').length
Možemo da pristupimo članu liste pomoću notacije zagrade:
document.getElementsByTagName('p')[0]
Kolekcije elemenata
U ranim danima, pre DOM selektora, JavaScript je imao ograničen pristup HTML elementima, kojima se uglavnom pristupalo preko sledećih kolekcija:
document.images
- kolekcija svih slika na stranici.document.forms
- kolekcija svih formi na stranici.document.links
- kolekcija svih<a>
tagova koji imaju atributhref
.document.anchors
- kolekcija svih<a>
tagova sa atributomname
.
Na primer, ovako pristupamo prvoj formi na stranici:
document.forms[0]
Ovako pristupamo vrednosti prvog polja prve forme:
document.forms[0].elements[0].value