ID-ul este un atribut care poate fi adaugat in etichetele (sau tag-urile) HTML. Prin valoarea data acestui atribut se atribuie un nume unic etichetei respective. Acest "id" poate fi folosit in stilurile CSS pentru a defini aspectul grafic si aranjarea in pagina a tag-ului respectiv, dar poate fi folosit si in scripturi JavaScript pentru a lucra cu elementele si continutul etichetei HTML. Astfel, id-ul poate face o legatura intre JavaScript si orice eticheta HTML din document.
Pentru a face referire intr-un script JS la o eticeta HTML, prin intermediul id-ului acesteia, se foloseste urmatoarea sintaxa:
Aceasta sintaxa "document.getElementById("id")" returneaza o referinta la intreg elementul HTML care are acest "id", va defini un obiect continand atributele si continutul acestuia. Pentru a face referire la anumite parti din acest obiect (element HTML), de exemplu la continut sau la un atribut "style", se folosesc proprietati specifice acestui obiect de nivel 2. Mai jos este prezentata o lista cu cele mai folosite.
Proprietati folosite cu "document.getElementById("id")"
In acest exemplu folosim o functie JavaScript care este actionata cand se exzecuta click pe un link, aceasta va afisa o fereastra Alert cu numele atributului al doilea din eticheta pentru link.
<script type="text/javascript">- Observati ca nu am folosit "document.getElementById("un_id")", dar am folosit proprietatea "this". Aceasta face referire la elementul curent care este actionat, astfel, in script, in loc de val.attributes[1].name se putea folosi document.getElementById('id_link').attributes[1].name, rezultatul aici este acelasi.
<!--
function test(val) {
var nume_a = val.attributes[1].name;
alert(nume_a);
}
//-->
</script>
<a href="#" id="id_link" title="Link pt. test" onclick="test(this)">Un link</a>
Un link- Observati ca fereastra Alert va afisa "title", numele atributului, care desi este al treile, adaugarea in matricea "attributes[]" se face de la dreapta si primul element are insex 0, al doilea 1 (aici 'title'), si tot asa.
Lucrul cu childNodes necesita cunoasterea mai multor proprietati care apartin de acesta, dar aici voi prezenta un exemplu simplu ca sa intelegeti cum se foloseste.
In acest exemplu avem un DIV in cadrul careia este un text oarecare si o eticheta SPAN. Pentru a vedea rezultatul scriptului cu "childNodes", un link apeleaza functia acestui script.
<script type="text/javascript">- "document.getElementById("ex2").childNodes[1].childNodes[0]" s-ar putea traduce: primul element ( childNodes[0] ) al elementului doi ( childNodes[1] ) din eticheta cu id="ex2", iar "nodeValue" returneaza valoarea.
<!--
function test2() {
var val2 = document.getElementById("ex2").childNodes[1].childNodes[0].nodeValue;
alert(val2);
}
//-->
</script>
<div id="ex2">Un text oarecare - <span>JavaScript in span</span> - alt text</div>
<a href="#" onclick="test2()" title="Exemplu cu childNodes">Test 2</a>
- Va afisa textul din SPAN, eticheta <span> cu tot continutul ei este al doilea element al DIV-ului (primul fiind sirul "Un text oarecare -"), iar sirul din cadrul etichetei SPAN este primul element al acesteia.Un text oarecare - JavaScript in span - alt textTest 2
In acest exemplu sunt folosite doua link-uri care actioneaza o functie JS care va prelua valoarea atributului specificat (aici 'title') si o va afisa in fereastra Alert.
Al doilea link transmite parametrul 1, caz in care functia va modifica valoarea atributului "title" din primul link inainte de preluarea lui, rezultat care se va vedea in fereastra Alert.
<script type="text/javascript">- Acest exemplu va afisa in pagina urmatoarele doua link-uri, dati click pe primul apoi pe al doilea si iar pe primul; veti observa diferenta.
<!--
function test3(nr) {
if (nr == 1) {
document.getElementById("ex3").setAttribute('title', 'Valoare title modificata');
}
var val3 = document.getElementById("ex3").getAttribute('title');
alert(val3);
}
//-->
</script>
<a href="#" id="ex3" title="Exemplu cu getAttribute()" onclick="test3(0)">Link 1</a> - <a href="#" title="Link 2 - setAttribute()" onclick="test3(1)">Link 2</a>
Link 1 - Link 2
Sfat: Cand doriti sa schimbati valoarea unei clase, in loc de "setAttribute()" folositi className, deoarece IE creaza probleme cu "setAttribute" pt. clase.
Exemplu:
obiect.className = 'nume_clasa';
Aici este prezentat un exemplu care modifica adresa URL adaugata in atributul 'href' al unui link.
<script type="text/javascript">- Link-ul de mai jos, desi are scris in codul lui sa deschida pagina de jocuri, prin evenimentul 'onmouseover' care apeleaza functia "test4()" la pozitionarea mouse-ului pe link se modificat valoarea atributului 'href' si va deschide alta pagina (aceea setata in functie).
<!--
function test4() {
document.getElementById("ex4").href="http://www.discant.ro/javascript/";
}
//-->
</script>
<a href="http://www.discant.ro/jocuri/" id="ex4" title="Exemplu cu href" target="_blank">Jocuri</a>
Jocuri
Cu innerHTML se poate prelua continutul incadrat de o eticheta HTML, dar poate sa si inlocuiasca cu altul acest continut, folosind inclusiv tag-uri.
In acest exemplu avem DIV-ul de la exemplu 2 si doua link-uri, acestea apeleaza o functie JS care pentru primul link va afisa o fereastra Alert cu tot continutul DIV-ului iar pentru al doile link va inlocui acest continut cu sirul din atributul 'title' (transmis ca parametru).
<script type="text/javascript">- In pagina va afisa urmatorul rezultat; dati click pe primul link si apoi pe al doilea.
<!--
function test5(vl) {
if (vl == 0) {
var val5 = document.getElementById("ex5").innerHTML;
alert(val5);
}
else {
document.getElementById("ex5").innerHTML = vl;
}
}
//-->
</script>
<div id="ex5">Un text oarecare - <span>JavaScript in span</span> - alt text</div>
<a href="#" title="Exemplu cu innerHTML" onclick="test5(0)">Afiseaza Alert</a> - <a href="#" title="Exemplu cu innerHTML - inlocuire" onclick="test5(this.getAttribute('title'))">Modifica DIV</a>
- Observati ca desi este folosita aceeasi expresie "document.getElementById("ex5").innerHTML", aceasta are efecte opuse.Un text oarecare - JavaScript in span - alt text
Afiseaza Alert - Modifica DIV
Cu style puteti modifica grafic elementele din pagina, pentru aceasta se folosesc proprietatile si valorile specifice CSS. Sintaxa generala este:
document.getElementById("id").style.proprietate="valoare"
- "proprietate" si "valoare" sunt preluate din CSS, exemplu: color (proprietate) si blue (valoare).
- diferenta apare la proprietatile CSS compuse, cum e "font-weight", "margin-top" sau "border-top-width" si altele similare. In JavaScript dispare liniuta '-' si cuvintele urmatoare se scriu cu primul caracter majuscula, astfel pentru "font-weight" din CSS in JS este "fontWeight", iar pentru "border-top-width" in JS este "borderTopWidth".
In exemplul prezentat aici avem un DIV in cadrul caruia este un link si un tag SPAN care la inceput are "display:none" (nu apare in pagina). O functie JavaScript care este apelata cu "onmouseover" face ca atunci cand mouse-ul este pe link sa apara continutul din SPAN (adauga acestuia "display:inline") si cand mouse-ul este pozitionat deasupra acestuia, textul devine albastru si ingrosat.
<script type="text/javascript">- In pagina va apare urmatorul link, pozitionati mouse-ul pe el apoi mutati cursorul pe textul care apare.
<!--
function test6(nr) {
if (nr == 0) {
document.getElementById('ex6').style.display = 'inline';
}
else if (nr == 1) {
document.getElementById('ex6').style.color = '#0101ff';
document.getElementById('ex6').style.fontWeight = 'bold';
}
}
//-->
</script>
<div>
<a href="#" title="Exemplu cu style" onmouseover="test6(0)">Link ex6</a>
- <span id="ex6" style="display:none;" onmouseover="test6(1)">Textul din SPAN, ascuns</span>
</div>
Link ex6 - Textul din SPAN, ascuns
Proprietatea value se foloseste cu elemente din formular, aceasta preia sau atribue valori in campurile din formular.
"value" se poate folosi si cu proprietati specifice lucrului cu formulare, in care se utilizeaza numele din atributul "name". (Vedeti detalii si exemple la Lectia 12 si Lectia 13).
- Pentru a folosi proprietatea "value" impreuna cu "getElementById('id')", campul sau caseta de formular la care se face referire trebuie sa aibe atribuita un "id".
Iata un exemplu simplu care afiseaza intr-o fereastra Alert textul scris intr-o caseta de text.
<script type="text/javascript">- Codul de mai sus va afisa urmatorul rezultat.
<!--
function test7() {
var val7 = document.getElementById("ex7").value;
alert(val7);
}
//-->
</script>
<form action="" method="post">
<input type="text" id="ex7" />
<input type="button" value="Click" onclick="test7()" />
</form>