Site hosted by Angelfire.com: Build your free website today!

HTML DOM Juurdepääs Liidestele

dom.jpg

HTML DOM abil saavutame juurdepääsu igale liidesele Html dokumendis.

Juurdepääsu võimalused:

  1. Kasutatakse getElementByld() meetodit
  2. Kasutatakse getElementsByTagname() meetodit
  3. Navigeerides liidestes kasutades nende omavahelist seost

getElementById() Meetod

getElementById() meetod pöördub elemendi poole määratud id abil.
Kirjaviis e. süntaks on selline:

document.getElementById("mingiID");

Proovi ise:

Pane tähele: getElementById() meetod ei tööta XML'is.

getElementsByTagName() Meetod

getElementsByTagName() meetod kasutab kõiki elemente määratud märgise abil.
Kirjaviis e. süntaks on selline:

node.getElementsByTagName("märgise nimi");

Näide 1

Allpool olevas näites nodeList kasutab kõiki <p> elemente dokumendis:

document.getElementsByTagName("p");

Proovi ise:

Näide 2

Järgnevas näites nodeList kasutab kõiki <p> elemente mis on elemendi id="pea" järglased:

document.getElementById('main').getElementsByTagName("p");

Proovi ise:

DOM Liideste Kollektsioon

getElementsByTagName() meetod kogub liidesed. Allpool olevas näites kirjutatud kood kollektsioneerib <p> liidesed muutujasse x.

x=document.getElementsByTagName("p");

x'is asuvale <p> elemendile juurdepääs on võimalik numbrilise viite e. indeksi abil. Teisele <p> elemendile avab juurdepääsu selline kirjaviis:

y=x[1];

Proovi ise:

Pane tähele: Viide e. indeks algab nulliga (0).

DOM Liideste Kollektsiooni Pikkus

Pikkuse omadus võimaldab määrata liideste hulka arvuliselt:

x=document.getElementsByTagName("p");
		for (i=0;i<x.length;i++)
  {
  document.write(x[i].innerHTML);
  document.write("<br />");
  }

Proovi ise:

Navigeerimine liidestes

Omadused parentNode, firstChild ja lastChild järgivad dokumendi struktuuri ning võimaldavad navigeerida liidestes mis on omavahel suguluses.

Vaatame ühte dokumenti:

      <html>
    <body>
<p id="intro">PyramDesign näide</p>
 <div id="main">
<p id="main1">HTML DOM on vjalik</p>
<p id="main2">See näide demonstreerib 
liideste <b>omavahelisi suhteid</b></p>
 </div>
    </body>
      </html>

Ülal toodud näites, <p id="intro"> on <body> elemendi esimene tütar-liides (firstChild) ja <div> element on <body> elemendi viimane tütar-liides.

Sellest järeldub, et <body> on iga <p> elemendi, juur-liides (parentNode).

firstChild omadust kasutades saavutatakse juurdepääs elemendi tekstile:

var x=document.getElementById("intro");
var text=x.firstChild.nodeValue;

Proovi ise:

Juur liidesed

On veel olemas kaks spetsiaalset dokumendi omadust mis võimaldavad juurdepääsu elementidele:

Esimene omadus pöördub dokumendi juur-liidesele ning see omadus asub kõigis XML ja HTML dokumentides.

Teine on spetsiaalne omadus Html dokumendile mis võimaldab otse juurdepääsu <body> märgisesse.

Proovi ise:

Paneme DOM'i tööle

Proovime luua HTML DOM abil väikse tabeli mille lahtrites on mingisugune tekst. Antud näites oleks tekst "lahter on reas y tulbas x" Kirjuame sellise dokumendi:

      <html>
  <head>
<title>HTML Tabel koos JavaScript
 ja DOM Kasutajaliidesega</title>
<script>
    function start() {
        // määrame kasutajaliidese body elemendile
        var body = document.getElementsByTagName("body")[0];

        // loome <table> elemendi ja <tbody> elemedi
        var tbl     = document.createElement("table");
        var tblBody = document.createElement("tbody");

        // loome lahtrid
        for (var j = 0; j < 2; j++) {
            // loome tabeli read
            var row = document.createElement("tr");

            for (var i = 0; i < 2; i++) {
                // Loome <td> elemendi ja teksti liidese
                // tekst asub <td> sees ning paneme <td>
                // tabeli rea lõppu
                var cell = document.createElement("td");
                var cellText = document.createTextNode("lahter on reas 
"+j+", tulbas "+i);
                cell.appendChild(cellText);
                row.appendChild(cell);
            }

            // lisame rea table body lõppu
            tblBody.appendChild(row);
        }

        // paneme <tbody>  <table> sisse

        tbl.appendChild(tblBody);
        // lisame <table> <body> sisse
        body.appendChild(tbl);
        // määrame äärise atribuudi 2;
        tbl.setAttribute("border", "2");
    }
</script>
 </head>
  <body onload="start()">
   </body>
    </html>

Pane tähele: Muutuja var cellText = document.createTextNode("lahter on reas "+j+", tulbas "+i); on selles näites poolitatud kuna antud lehe disain on selline. Tegelikult ei ole lubatud koodi jätkamine uuelt realt.

Vaatame mida me siis tegime:

  1. Kõigepealt lõime <table> elemendi.
  2. Järgmisena lõime <tbody> elemendi mis on omakorda <table> elemendi tütar-liides.
  3. Seejärel kasutasime silmust (loop) elementi <tr> elemendi loomiseks mis omakorda on <tbody> elemendi tütar-liides.
  4. Igale <td> elemendile lõime teksti-liidese milleks on tekst tabeli lahtris.

Nüüd kus oleme loonud <table>, <tbody>, <tr> ja <td> elemendid ning tekstiliidese on vaja need vastavalt lisada juurelementidesse:

  1. Kõigepealt lisame teksti-liidese tema juurelementti <td>
    cell.appendChild(cellText);
    
  2. Järgnevalt lisame iga <td> elemendi tema juurelementti <tr>
    row.appendChild(cell);
    
  3. Siis lisame <tbody> elemendi tema juurelementti <table>
    tbl.appendChild(tblBody);
    
  4. Lõpuks lisame <table> elemendi tema juurelementti <body>
    body.appendChild(tbl);
    

Jäta see tehnika endale meelde. Kõigepealt loome elemendid ülevalt alla ja siis lisame "tütred" nende vanematele e. juurtele, alt ülesse.

Proovi ise:



Punane Nool Vasak Punane Nool