querySelector si querySelectorAll

querySelector() si querySelectorAll() sunt doua functii JavaScript foarte utile cand se lucreaza cu elemente HTML in JavaScript.
Cu aceste functii se pot prelua in JavaScript elemente HTML selectate dupa selectori CSS ("id", "class").
Sunt suportate de principalele navigatoare web: Mozilla Firefox 3.5+, Google Chrome, Internet Explorer 8+, Opera 10+, Safari 3.2+.

querySelector()

querySelector() returneaza primul element din document care se potriveste cu grupul de selectori specificati, sau null daca nu e gasit.
Sintaxa:
var elm = document.querySelector('selectori');
- "selectori" e un sir cu unul sau mai multi selectori CSS, separati prin virgula.
- elm e variabila ce va contine obiectul cu elementul HTML.

Exemplu, codul de mai jos afiseaza o fereastra Alert cu continutul din tag-ul HTML cu id="someid", si cel din primul LI cu class="aclass".
<div id="someid">Sa ai viata buna.</div>
<ul>
 <li class="aclass">MarPlo.net</li>
 <li>MarPlo.net</li>
 <li class="aclass">php.net</li>
</ul>

<script type="text/javascript">
var someid_cnt = document.querySelector('#someid').innerHTML;
var aclass1_cnt = document.querySelector('li.aclass').innerHTML;

alert(someid_cnt +'\n'+ aclass1_cnt);
</script>

querySelectorAll()

querySelectorAll() returneaza o lista de elemente din document care se potrivesc cu grupul de selectori specificati.
Daca sirul "selectori" contine pseudo-elemente CSS, returneaza o lista goala (navigatoarele WebKit au un "bug": daca sirul "selectori" contine pseudo-elemente CSS, returneaza obiectul <html>).
Sintaxa:
var elementList = document.querySelectorAll('selectori');
- "selectori" e un sir cu unul sau mai multi selectori CSS, separati prin virgula.
- elementList e variabila ce va contine lista cu obiectele HTML selectate.

Exemplu, creaza un Array cu continutul din tag-urile LI cu class="sites", si din tag-urile cu class="note" aflate in elementul cu id="idata":
<ul>
 <li class="sites">CoursesWeb.net</li>
 <li class="sites">MarPlo.net</li>
 <li>php.net</li>
</ul>
<div id="idata">
 <span class="note">Cursuri Web Development</span>
 <span class="note">querySelector si querySelectorAll</span>
</div>

<script type="text/javascript">
// preia toate tag-urile LI cu class="sites", si tag-urile cu class="note" din elementul cu id="idata"
var elm_list = document.querySelectorAll('li.sites, #idata .note');
var nr_elm = elm_list.length;         // numarul de elemente din elm_list

var arr_cnt = [];       // array pt. continutul din elm_list

// parcurge obiectul elm_list, si adauga in arr_cnt continutul fiecarui element
for(var i=0; i<nr_elm; i++) {
  arr_cnt.push(elm_list[i].innerHTML);
}

// test, arata datele din arr_cnt
alert(arr_cnt);
</script>
- Clic pe butonul "Test" ca sa vedeti rezultatul.

Diferenta dintre querySelector() si querySelectorAll() este aceea ca querySelector() returneaza un singur obiect cu primul element HTML care se potriveste cu "selectori", dar querySelectorAll() returneaza o lista de obiecte cu toate elementele HTML care se potrivesc cu "selectori".


• Pentru a limita cautarea obiectelor HTML la un singur element (nu in tot documentul), se pot aplica aceste functii la un obiect cu elementul de interes.
obiectElement.querySelector('selectori')

obiectElement.querySelectorAll('selectori')

- Iata un alt exemplu cu querySelectorAll(), selectarea se face pe un anumit element, nu pe "document". Cand cursorul de la mouse e pe tag-ul <a> selectat, adresa URL e adaugata intr-un anumit DIV.
<div id="seeurl">Arata adresa URL.</div>
<ul id="sites">
 <li><a href="http://coursesweb.net/javascript/" title="Curs JavaScript">Curs JavaScript</a></li>
 <li><a href="http://www.marplo.net/" title="Cursuri Jocuri Anime">Cursuri Jocuri Anime</a></li>
</ul>

<script type="text/javascript">
// preia tag-urile A din LI adaugate in elementul cu id="idata"
var elm_list = document.getElementById('sites').querySelectorAll('li a');
var nr_elm = elm_list.length;         // numar de elemente in elm_list

// parcurge obiectul elm_list
for(var i=0; i<nr_elm; i++) {
  // inregistreaza eveniment onmouseover sa adauge in #seeurl adresa din "href" a fiecarui <a> selectat
  elm_list[i].onmouseover = function() {
    document.getElementById('seeurl').innerHTML = this.href;
  }

  // inregistreaza eveniment onmouseover sa adauge in #seeurl un anumit text
  elm_list[i].onmouseout = function() {
    document.getElementById('seeurl').innerHTML = 'Arata adresa URL.';
  }
}
</script>
- Demo. Puneti cursorul de la mouse pe fiecare link.
Arata adresa URL.

getElementsByTagName <<-- Anterior --- Urmator -->> createElement si insertBefore

Un Test simplu in fiecare zi

HTML
CSS
JavaScript
PHP-MySQL
Engleza
Spaniola
Ce tag adauga imagine in pagina web?
<div> <img> <span>
<img src="http://coursesweb.net/imgs/webcourses.gif" width="191" height="63" alt="Courses-Web" />
Care din aceste coduri CSS afiseaza textul inclinat?
font-style: italic; text-decoration: underline; font-weight: 500;
#id {
  font-style: italic;
}
Clic pe functia jQuery care ascunde animat un element HTML.
click() hide() show()
$(document).ready(function() {
  $(".a_class").click(function(){ $(this).hide("slow"); });
});
Clic pe functia definita corect in PHP.
fname function() {} function fname() {} function $fname() {};
function fname($a, $b) {
  echo $a * $b;
}
Indicati forma pentru Prezent Perfect Continuu a verbului "to walk" (a merge).
have walked have been walking be walking
I have been walking for 5 hours.
- Merg pe jos de 5 ore.
Indicati Trecutul Nedefinit pentru verbul "ser" (a fi) la forma Yo.
será sería fui
Yo fui entrenador.
- Am fost antrenor.
querySelector si querySelectorAll - Tutoriale JavaScript