Professional Documents
Culture Documents
Pierwsze starcie
Autor: Mariusz Owczarek
ISBN: 978-83-246-2076-0
Format: 158235, stron: 144
Jzyk JavaScript, cho ma ju blisko dwanacie lat, swoimi moliwociami wci potrafi
zafascynowa niejednego projektanta stron internetowych. Ma ju za sob gorsze dni,
jednak aktualnie dziki technologii AJAX znw jest na topie. Wykorzystujc go
w odpowiedni sposb, sprawisz, e twj serwis WWW stanie si bardziej interaktywny
i dynamiczny.
Ta ksika pozwoli Ci wyj zwycisko z pierwszego starcia z tym jzykiem! Dowiesz
si z niej, jak uywa zmiennych, operatorw oraz funkcji. Nauczysz si reagowa na
zdarzenia oraz wykorzystywa okna dialogowe. Ponadto zdobdziesz wiedz na temat
pracy z obiektami DOM HTML oraz na temat sposobw reagowania na bdy
w skryptach. Autor przedstawia tu take dostpne obiekty JavaScript oraz pokazuje,
jak wykonywa operacje zwizane z czasem. Ogromnym atutem tej ksiki jest
przejrzysto i usystematyzowany sposb prezentowania informacji. Dziki temu
rwnie Ty szybko i bezbolenie poznasz JavaScript!
Typowe konstrukcje jzyka JavaScript
Wykorzystanie zmiennych
Zastosowanie funkcji
Reagowanie na zdarzenia
Sposoby uycia okien dialogowych
Wykonywanie operacji zwizanych z czasem
Dostpne obiekty JavaScript
Obiekty DOM HTML
Przygotowanie wasnych obiektw
Dziedziczenie w JavaScript
Obsuga bdw
Spis treci
Rozdzia 1. Pierwsze spotkanie z JavaScriptem ................................................... 7
Dlaczego JavaScript? ........................................................................................................ 7
Instalowanie debuggera Venkman w programie Firefox .................................................. 8
Skrypt w pliku HTML ...................................................................................................... 8
Skrypty umieszczone w oddzielnych plikach ................................................................. 10
Test ................................................................................................................................. 11
Spis treci
Rozdzia 9.
Praca z dokumentami
DOM HTML i XML
Drzewo obiektw
Jak ju wspomniaem w poprzednim rozdziale, specyfikacja DOM pozwala na traktowanie strony Web jako zbioru elementw. Elementy tworz drzewo, podobnie jak pliki i foldery na dysku. Zamiast plikw i folderw mamy tu wzy (node) i elementy. W przypadku dokumentu HTML elementami s obiekty HTML. Zamiast tworzy je bezporednio
w dokumencie, mona utworzy je za pomoc skryptu, uzyskujc dynamiczn stron
Web. To wszystko moe by poczone z pobieraniem danych z dokumentw XML.
Opis
createElement(nazwa)
createTextNode(tekst)
98
Element jest obiektem typu element i po utworzeniu nie jest zwizany do dokumentem, tzn. e nie jest umieszczony od razu w drzewie obiektw dokumentu. Jest
zmienn tak jak inne zmienne w JS. Aby ustawi go w drzewie lub zmieni jego parametry (na przykad wygld tabeli), trzeba uy funkcji bdcych czci elementu.
Funkcje obiektu element przedstawia tabela 9.2.
Tabela 9.2. Funkcje obiektu element
Nazwa
Opis
appendChild(element)
cloneNode(parametr)
removeChild(element)
applyElement(element)
setAttribute(nazwa
atrybutu, wartoci)
Bdziemy te wykorzystywa dwie wasnoci obiektu element, ktre su do sprawdzania elementw podrzdnych w stosunku do danego. Wasnoci te zawiera tabela 9.3.
Tabela 9.3. Wasnoci obiektu element
Wasno
Opis
firstChild
childNodes[]
nodeName
Nazwa wza.
nodeType
nodeValue
Tych kilka funkcji wystarczy do tworzenia elementw na stronie Web. Czas na przykad. Stworzymy stron z paragrafem <p> i obiektem <div>, oczywicie tworzonymi
nie poprzez kod HTML, ale za pomoc naszych funkcji.
jak zwykle:
<script type = "text/javascript">
w div jak na rysunku 9.1. Na razie moe nie wyglda to zbyt efektownie,
ale to dopiero pocztek moliwoci.
Rysunek 9.1.
Elementy utworzone
dynamicznie na stronie
99
100
z arkusza dla tych elementw. Miejsce wywoania tej funkcji w zasadzie nie
ma znaczenia, ja umieciem j po dodaniu elementu do ciaa strony. I tak dla
paragrafu:
document.getElementById("body1").appendChild(paragraf); //ta linia istnieje
paragraf.setAttribute("id","pstyl1"); //tu zmieniamy parametr id
101
umiecimy na stronie.
<script type="text/javascript">
function zmien(element1,element2)
{
var stylpara = new Array(5);
var styldiv = new Array(5);
stylpara[0] = "pstyl1"
stylpara[1] = "pstyl2"
styldiv[0] = "divstyl1"
styldiv[1] = "divstyl2"
element1.setAttribute("id",stylpara[document.getElementById("lista1").sele
ctedIndex])
element2.setAttribute("id",styldiv[document.getElementById("lista2").
selectedIndex])
}
</script>
102
przycisku.
var odn = document.getElementById("przycisk");
if (odn.addEventListener) {odn.addEventListener("click",function()
{zmien(paragraf,div1);},true);}
else if (odn.attachEvent) {odn.attachEvent("onclick",function()
{zmien(paragraf,div1);});}
103
div1.appendChild(tekst2);
document.getElementById("body1").appendChild(div1);
Budowanie tabeli
Czasem na stronie Web chcemy zaprezentowa dane w formie tabeli, przy czym tabela ta musi mie rn dugo i pobiera dane z zewntrznego rda, na przykad
dokumentu XML. Poka najpierw, jak zbudowa tak tabel, wykorzystujc znane
ju funkcje obiektu document, a w dalszym cigu jak zaimportowa dane z XML.
Tabel budujemy podobnie jak elementy strony pokazane w poprzednich przykadach, z tym e drzewo obiektw tabeli jest bardziej skomplikowane. Wemy na pocztek prost tabel 22 pola, pokazan w tabeli 9.4.
Tabela 9.4. Przykadowa tabela na stronie Web
Pole 1,1
Pole 2,1
Pole 1,2
Pole 2,2
Jak pewnie wiesz, tabele w HTML tworzymy za pomoc znacznika <table>. Tabela 9.1
zapisana w HTML w tradycyjny sposb bdzie miaa posta:
<table>
<tr>
<td>Pole 1,1</td><td> Pole 2,1 <td>
</tr>
<tr>
<td>Pole 1,2</td><td>Pole 2,2</td>
</tr>
</table>
My narysujemy t tabel na stronie, budujc jej drzewo. Wygld tego drzewa przedstawia rysunek 9.3. Jest ono, oczywicie, zbudowane ze znanych elementw HTML.
Takie wanie drzewo zbudujemy za pomoc poznanych funkcji, zrobimy to w nastpnym przykadzie. Tak skonstruowana tabela moe by dowolnie zmieniana podczas dziaania skryptu.
104
Rysunek 9.3.
Drzewo elementw
w tabeli 9.1
105
jednego piksela.
<style>
table, td {
106
Na razie sens stosowania takich tabel moe wydawa si cokolwiek mglisty, poniewa stworzenie ich zajmuje o wiele wicej czasu ni tabel statycznych. Zalety tabel
dynamicznych ujawni si, kiedy bdziemy je tworzy z danych z zewntrznego rda,
na przykad dokumentu XML.
107
Opis
createDocument(PrzestrzeNazw,
IdDokumentu, TypDokumentu)
hasFeature(NazwaModuu,
WersjaModuu)
createDocumentType(Nazwa,
IdentyfikatorPubliczny,
IdentyfikatorSystemowy)
108
5. Wszystkie elementy zbioru auta.xml s ju w tablicy dane[], przy czym jedno pole
tej tablicy zawiera dane zapisane midzy znacznikami <samochod> i </samochod>
w pliku XML. Struktur tablicy dane[] przedstawia rysunek 9.6. Teraz pozostaje
wywietli odpowiednie komrki z tablicy dane w tabeli HTML, skonstruowanej
}
tabhead.appendChild(wierszng);
Nie wszystkie wzy s wywietlane, tylko te, ktre prowadz do gazi wzw
tekstowych, tylko one reprezentuj elementy ograniczone znacznikami <marka>
</marka>, <kolor> </kolor> itp. Jak wida z rysunku 9.6, mamy w drzewie
dodatkowe puste wzy tekstowe przy gwnym pniu. Wzy te s dodawane
wszdzie midzy znacznikami, dlatego s te na przykad midzy znacznikiem
</marka> i <pojemnosc>. S one niepotrzebne, ale nie da si ich unikn.
109
Rysunek 9.6.
Struktura pola
tabeli dane[]
7. Aby poprawi wygld tabeli, na pocztku sekcji <head> dodamy arkusz stylw.
<style>
table, td, th {
border: solid 1px;
}
</style>
110
Rysunek 9.7.
Wynik dziaania
skryptu z przykadu
9.6. Dokument XML
prezentowany
w postaci tabeli
nastpujco:
<script type="text/javascript">
dokumentxml = new ActiveXObject("Microsoft.XMLDOM");
dokumentxml.async="false";
dokumentxml.load("auta.xml");
documentLoaded();
</script>
111
Test
1. Do tworzenia elementu (nie wza tekstowego) suy funkcja obiektu document:
a) makeElement(),
b) createElement(),
c) createTextNode().
2. Po utworzeniu elementu:
a) jest on od razu zwizany w gazi drzewa sekcji <body>;
b) jest on od razu zwizany w gazi drzewa sekcji <head>;
c) trzeba go umieci w drzewie za pomoc funkcji appendChild().
3. Aby ustawia wygld elementw utworzonych dynamicznie na stronie
a) mona skorzysta z funkcji setAttribute() do ustawienia danej wasnoci,
112
typu obiektu.
4. Dokumenty XML:
a) S nowym formatem arkusza kalkulacyjnego.
b) S sposobem na uporzdkowany zapis danych.
c) Zapisuje si je w postaci plikw tekstowych.
5. W MS Internet Explorerze dokument XML tworzymy:
a) za pomoc document.implementation.createDocument();
b) w ogle nie mona utworzy dokumentu XML;
c) za pomoc kontrolki ActiveX.