background image

ITA-103 Aplikacje Internetowe 

Piotr Bubacz 

Moduł 3 

Wersja 1 

Podstawy JavaScript 

Spis treści 

Podstawy JavaScript ............................................................................................................................ 1 

Informacje o module ........................................................................................................................... 2 

Przygotowanie teoretyczne ................................................................................................................. 3 

Przykładowy problem ................................................................................................................. 3 

Podstawy teoretyczne ................................................................................................................. 3 

Uwagi dla studenta ................................................................................................................... 10 

Dodatkowe źródła informacji .................................................................................................... 10 

Laboratorium podstawowe ............................................................................................................... 11 

Problem 1 (czas realizacji 20 min) ............................................................................................. 11 

Problem 2 (czas realizacji 25 min) ............................................................................................. 14 

Laboratorium rozszerzone ................................................................................................................ 17 

 

 

background image

Piotr Bubacz 

 

Moduł 3 

ITA-103 Aplikacje Internetowe 

 

Podstawy JavaScript 

Strona 3-2 

Informacje o module 

Opis modułu 

W tym module znajdziesz informacje dotyczące podstaw języka JavaScript. 
Nauczysz  się  tworzyd  kod  działający  po  stronie  klienta  w  przeglądarce. 
Poznasz  sposoby  sprawdzania  poprawności  wprowadzanych  informacji 
przez użytkownika. 

Cel modułu 

Celem  modułu  jest  przedstawienie  możliwości  wykorzystania  języka 
JavaScript  do  tworzenia  interaktywnych  aplikacji  działających  po  stronie 
klienta,  jak  również  przedstawienie  możliwości  pracy  z  tym  językiem 
w Visual Studio 2008. 

Uzyskane kompetencje 

Po zrealizowaniu modułu będziesz: 

 

wiedział  jak  tworzyd  interaktywne  aplikacje  działające  po  stronie 
klienta w przeglądarce 

 

potrafił pisad aplikację w języku JavaScript 

 

potrafił pracowad z językiem JavaScript w Visual Studio 2008  

Wymagania wstępne 

Przed przystąpieniem do pracy z tym modułem powinieneś: 

 

znad  podstawy  języka  XHTML  (patrz:  moduł  „Wprowadzenie  do 
XHTML”) 

 

znad  zasady  pracy  w  środowisku  Visual  Studio,  w  szczególności 
tworzenia stron internetowych zgodnych z XHTML 

 

znad  podstawy  definiowania  wyglądu  aplikacji  w  oparciu  o  style 
kaskadowe CSS 

Mapa zależności modułu 

Zgodnie  z  mapą  zależności  przedstawioną  na  Rys.  1,  przed  przystąpieniem 
do  realizacji  tego  modułu  należy  zapoznad  się  z  materiałem  zawartym 
w module Wprowadzenie do XHTML oraz Kaskadowe Arkusze Stylów – CSS. 

MODUŁ 3

MODUŁ 13

MODUŁ 4

MODUŁ 7

MODUŁ 1

MODUŁ 6

MODUŁ 2

MODUŁ 5

MODUŁ 8

MODUŁ 9

MODUŁ 10

MODUŁ 11

MODUŁ 12

 

Rys. 1 Mapa zależności modułu 

 

background image

Piotr Bubacz 

 

Moduł 3 

ITA-103 Aplikacje Internetowe 

 

Podstawy JavaScript 

Strona 3-3 

Przygotowanie teoretyczne 

Przykładowy problem 

Mając  pewne  doświadczenie  w  tworzeniu  stron  internetowych  zgodnych  ze  standardem  XHTML, 
których  wygląd  definiujemy  za  pomocą  arkusza  stylów  CSS  kolejnym  krokiem  jest  chęd 
umieszczenia  elementów  interaktywnych  na  stronie.  Możemy  wykorzystad  np.  technologię  Flash 
czy  Silverlight,  jednak,  nie  jest  to  proste  zadanie.  Potrzebujemy  prostego  języka,  który  umożliwia 
tworzenie  pewnej  interakcji  z  użytkownikiem  po  stronie  klienta  w  przeglądarce.  Umożliwi 
sprawdzenie  poprawności  wpisywanych  danych  do  formularza  czy  uatrakcyjni  Twoją  stronę 
poprzez rozwijane elementy np. menu. Do tego celu powszechnie wykorzystuje się język JavaScript.  

Podstawy teoretyczne 

JavaScript  jest  skryptowym,  interpretowanym  językiem  o  składni  podobnej  do  języka  C.  Aplikacje 
napisane  w  tym  języku  są  wykonywane  po  stronie  klienta.  Zaletą  tego  rozwiązania  jest 
natychmiastowe  działanie,  dzięki  czemu  strony  wydają  się  funkcjonowad  szybciej.  Możliwe  jest 
również  osiąganie  pewnych  dodatkowych  funkcjonalności  od  wyświetlania  okien  dialogowych  po 
zaawansowane aplikacje AJAX. 

Umieszczanie kodu JavaScript 
Kod aplikacji możemy umieszczad w stronie lub w zewnętrznym pliku. Możemy również odwoływad 
się do wielu plików równocześnie, co ułatwia nam tworzenie i korzystanie z bibliotek funkcji. 

Umieszczanie kodu JavaScript na stronie  

Kod aplikacji na stronie HTML należy umieścid w znacznikach scripts: 

<script type="text/javascript"> 
  // Tutaj umieszczamy kod aplikacji 
</script> 

Na  stronie  możemy  umieścid  więcej  niż  jeden  blok  scripts  praktycznie  w  dowolnym  miejscu, 
najczęściej  dla  łatwego  odnajdowania  kodu  umieszczany  on  jest  w  nagłówku  pliku  –  znaczniku 
head. Jeśli jednak skrypt tworzy dynamiczną zawartośd należy umieścid go w miejscu, w którym ta 
zawartośd ma się pojawid.  

Umieszczanie kodu JavaScript w zewnętrznych repozytoriach 

Tworząc  aplikacje  w  języku  JavaScript  możemy  budowad  bibliotekę  funkcji  lub  korzystad  z  innych 
rozbudowanych  bibliotek.  Repozytorium  jest  umieszczane  w  zewnętrznych  plikach  tekstowych, 
najczęściej z rozszerzeniem js. Dołączmy je do aplikacji podobnie jak skrypt podając w właściwości 
src ścieżkę dostępu do pliku.  

<script type="text/javascript" src="biblioteka.js"></script> 

Przeglądarka  po  napotkaniu  takiego  znacznika  zatrzyma  wykonywanie  strony  aż  do  załadowania 
zewnętrznego pliku, dlatego najlepiej jest pododawad taką informację w nagłówku strony. 

Obsługa wejścia i wyjścia 
W  przypadku  aplikacji  internetowych  jednym  z  najważniejszych  elementów  jest  wyświetlanie 
i pobieranie informacji. W tym względzie język JavaScript udostępnia kilka możliwości począwszy od 
pisania  na  stronie,  poprzez  okna  dialogowe,  aż  po  wyświetlanie  kodu  HTML  w  dowolnym 
elemencie.  

Pisanie na stronie  

Możliwe jest umieszczenie dowolnego napisu na stronie. W tym celu wykorzystujemy polecenie: 

document.writeln(napis) 

background image

Piotr Bubacz 

 

Moduł 3 

ITA-103 Aplikacje Internetowe 

 

Podstawy JavaScript 

Strona 3-4 

gdzie napis jest ciągiem znaków wyświetlonym na stronie. To polecenie powinno byd wykorzystane 
jedynie  podczas  tworzenie  strony.  Użycie  tego  polecenie  podczas  działania  strony  spowoduje 
w większości  przeglądarek  usunięcie  strony  i  wypisanie  jedynie  podanego  ciągu  znaków. 
Przykładowy kod wykorzystujący to polecenie: 

<script type="text/javascript"> 
  document.writeln("Witaj świecie"); 
</script> 

Podczas renderowania strony w przeglądarce napis pojawi się dokładnie w miejscu jego użycia. 

Okna dialogowe 

Kolejną  możliwością  wyświetlania  komunikatów  są  okna  dialogowe.  Jeśli  wyświetlimy  okno 
dialogowe  aplikacja  zatrzyma  wykonanie  skryptu  aż  do  momentu  kiedy  użytkownik  kliknie  OK. 
Przykład użycia: 

<script type="text/javascript"> 
  alert("Witaj świecie"); 
</script> 

Użycie tej metody powinniśmy ograniczyd do niezbędnego minimum. Wyskakujące okna dialogowe 
są raczej negatywnie odbierane przez użytkowników.  

Wyświetlanie kodu HTML w dowolnym elemencie 

Kolejną możliwością jest dynamiczne wyświetlanie kodu HTML w dowolnym elemencie na stronie. 
Każdy  element  na  stronie  może  posiadad  właściwośd  ID  jednoznacznie  go  identyfikującą. 
Wykorzystujemy  ją  nie  tylko  przy  definiowaniu  stylów  css,  ale  również  przy  odwoływaniu  się  do 
elementu w języku JavaScript. Przy pomocy konstrukcji: 

document.getElementById(idElementu) 

możemy jednoznacznie odwoład się do elementu o id=idElementu. Następnie możemy odwoływad 
się do właściwości takiego elementu. Najpopularniejsze właściwości to: 

 

innerHTML – umożliwia określenie kodu HTML który zostanie umieszczony w elemencie 

 

innerText – umożliwia określenie ciągu znaków który zostanie umieszczony w elemencie 

 

className – umożliwia określenie klasy CSS użytej do prezentacji elementu. 

Przykład użycia: 

<html xmlns="http://www.w3.org/1999/xhtml"> 
  <head> 
    <title>Test</title> 
    <style type="text/css"> 
      .wyroznienieCzerwone { color: Red; font-weight: 600; } 
    </style> 
  </head> 
  <body> 
    <div id="nazwa"></div> 
    <script type="text/javascript"> 
      document.getElementById("nazwa").innerHTML = "Witaj świecie"; 
      document.getElementById("nazwa").className = "wyroznienieCzerwone"; 
    </script> 
</body> 
</html> 

Zawartośd  elementu,  w  tym  przypadku  div  o  id="nazwa"  może  zostad  zmieniona  w  momencie 
ładowania strony.  

background image

Piotr Bubacz 

 

Moduł 3 

ITA-103 Aplikacje Internetowe 

 

Podstawy JavaScript 

Strona 3-5 

Pobieranie informacji od użytkownika 

Najprostszą  metodą  komunikacji  jest  wciśnięcie  przycisku  lub  innego  elementu  na  stronie.  Każdy 
element  na  stronie  umożliwia  obsługę  zdarzenia  kliknięcia  za  pomocą  właściwości  onclick. 
Podajemy w niej jako parametr nazwę funkcji która zostanie wywołana. Zmieniając zawartośd body 
z powyższego przykładu otrzymujemy: 

<div id="nazwa" onclick="zmien()"></div> 
<script type="text/javascript"> 
  document.getElementById("nazwa").innerHTML = "Witaj świecie";    
  function zmien() { 
    document.getElementById("nazwa").innerHTML = "Witaj ważny świecie!"; 
    document.getElementById("nazwa").className = "wyroznienieCzerwone";  } 
</script> 

Po  kliknięciu  na  napis  Witaj  świecie  pojawia  się  na  czerwono  napis  Witaj  ważny  świecie.  Kod 
umieszczony  w  znacznikach  jest  wykonywany  od  razu,  natomiast  kod  umieszczony  w  funkcji 
dopiero po jej wywołaniu po kliknięciu na aktywną zawartośd. 

Kolejną  możliwością  pobierania  informacji  od  użytkownika  są  pola  tekstowe.  Fragment  strony 
umożliwiający  wyświetlenie  w  miejscu  div  id="wynik"  informacji  wpisanej  w  kontrolce  input  o 
id="dane". 

<input id="dane" type="text" /> 
<input type="button" value="Wyświetl" onclick="Wyswietl()" /> 
<div id="wynik" ></div> 
<script type="text/javascript"> 
  function Wyswietl() { 
      document.getElementById("wynik").innerHTML = "Wpisałeś " +  
            document.getElementById("dane").value; } 
</script> 

Jak  wynika  z  powyższego  przykładu  konstrukcja  document.getElementById  służy  nie  tylko  do 
określania właściwości ale również do ich pobierania. 

Inną  możliwością  jest  przekazanie  do  funkcji  formularza  i  odwoływanie  się  do  elementów  przy 
pomocy właściwości value. W przypadku formularza przypisanie powyższe będzie miało postad: 

document.getElementById("wynik").innerHTML= "Wpisałeś " + form.imie.value ; 

Zdarzenia w JavaScript 
W poprzednim rozdziale wprowadziliśmy pojęcie obsługi zdarzeo w JavaScript. Zdarzenie to inaczej 
zajście  jakiejś  sytuacji  np.  kliknięcie  myszką,  przesuwanie  kursora  myszki  nad  obiektem  lub 
wpisywanie treści do kontrolki. Metoda obsługi zdarzenia to w języku JavaScript funkcja, która jest 
wywoływana w momencie wystąpienia określonego zdarzenia. Listę najważniejszych zdarzeo jakie 
są możliwe do obsłużenia w tym języku przedstawia Tab. 1. 

Tab. 1 Lista najważniejszych zdarzeo w języku JavaScript 
Zdarzenie 

Opis 

onChange 

Zawartośd elementu uległa zmianie.  

onClick 

Użytkownik kliknął na tym elemencie. 

onDblClick 

Użytkownik kliknął dwukrotnie na tym elemencie. 

onFocus 

Użytkownik wybrał dany element. 

onKeyDown 

Użytkownik nacisnął klawisz. 

onKeyPress 

Użytkownik nacisnął lub zwolnił klawisz. 

background image

Piotr Bubacz 

 

Moduł 3 

ITA-103 Aplikacje Internetowe 

 

Podstawy JavaScript 

Strona 3-6 

onKeyUp 

Użytkownik zwolnił klawisz. 

onMouseDown 

Użytkownik wcisnął przycisk myszki. 

onMouseOut 

Użytkownik przesunął kursor myszki poza element. 

onMouseOver 

Użytkownik przesunął kursor myszki poza element. 

onSubmit 

Użytkownik wcisnął przycisk wysyłający dane z formularza. 

 

Przepisywanie  treści  z  jednej  kontrolki  do  drugiej  można  również  obsłużyd  za  pomocą  zdarzenia 
onKeyUp: 

<input id="dane" type="text" onKeyUp="Wyswietl()" /> 
<div id="wynik" ></div> 
<script type="text/javascript"> 
  function Wyswietl() { 
      document.getElementById("wynik").innerHTML = "Wpisałeś " +  
            document.getElementById("dane").value; } 
</script> 

Co ciekawe nie trzeba nic zmieniad w funkcji Wyswietl. 

Zmienne  
Język  JavaScript  nie  jest  językiem  silnie  typowanym,  co  znaczy,  że  nie  musimy  przejmowad  się 
typem  zmiennych.  Możemy  przypisad  do  zmiennej  daną  dowolnego  typu,  a  następnie  poprzez 
ponowne przypisanie zmienid nie tylko zawartośd, ale również typ przechowywanej informacji, co 
nie jest polecane, bo w czasie wykonywania aplikacji nie wiadomo jakiego typu jest dana zmienna.  

Nazwa zmiennej nie może byd słowem zarezerwowanym, zaczynad się od liczby lub symbolu innego 
niż  $  lub  _.  Należy  również  unikad  nazw  zmiennych,  które  są  takie  same  jak  nazwy  elementów 
HTML.  

Zmiennymi mogą byd w języku JavaScript również funkcje. Możliwe jest następujące przypisanie: 

var mojaFunkcja = function() { 
                      return "Jestem sobie funkcją!"; } 

Po  zdefiniowaniu  takiej  funkcji  może  ona  byd  przekazana  jako  argument  do  innej  funkcji  lub 
przypisana  do  innej  zmiennej  tak,  jak  ciąg  znaków,  tablica  czy  inny  obiekt  JavaScript.  Ogólnie 
funkcje użyte bez nawiasów są traktowane jak zmienne: mogą byd przekazywane do innych funkcji 
i można  do  nich  przypisad  dowolne  wartości.  Użycie  nawiasów  wywołuje  działanie  funkcji 
i przekazuje wartośd zwrotną. 

Zmienne  mogą  byd  deklarowane  ze  słowem  kluczowym  var  lub  bez  niego.  W  przypadku,  kiedy 
użyjemy  tego  słowa  zmienne  są  widoczne  tylko  wewnątrz  funkcji  w  której  są  zdefiniowane.  Jeśli 
zadeklarujemy (przypisując po raz pierwszy wartośd) jakąś zmienna bez tego słowa kluczowego, to 
zmienna ma zasięg globalny. 

 

 

background image

Piotr Bubacz 

 

Moduł 3 

ITA-103 Aplikacje Internetowe 

 

Podstawy JavaScript 

Strona 3-7 

Operatory 

Operatory arytmetyczne 

Operatory arytmetyczne zostały przedstawione w Tab. 2.  

Tab. 2 Operatory arytmetyczne w JavaScript 
Operator 

Opis 

Dodawanie – również konkatenacja ciągów znaków 

Odejmowanie  

Mnożenie 

Dzielenie 

Reszta z dzielenia  

++ 

Inkrementacja przed lub po  

-- 

Dekrementacja przed lub po 

 

Operatory  inkrementacji  i  dekrementacji  zachowują  się  podobnie  jak  w  języku  C.  Jeśli  występują 
przed zmienną to operacja następuje natychmiast, jeśli po zmiennej, to operacja następuje po całej 
linii kodu. Przykład: 

var x = 1; 
var y = x++;     // y=1, x=2 
var z = ++x;     // z=3, x=3 

Operatory logiczne  

Operatory logiczne zostały przedstawione w Tab. 3.  

Tab. 3 Operatory logiczne 

Operator 

Opis 

Przypisania x=5; // przypisuje 5 do zmiennej x 

== 

Równości, czy x==5? 

=== 

Identyczności, x===5 czy x ma wartośd 5 i czy jest liczbą? 

!= 

Nie równe  

!== 

Nie identyczne  

Negacja   

|| 

Lub (OR) 

&& 

I (AND) 

Mniejsze niż 

<= 

Mniejsze niż lub równe 

Większe niż 

>= 

Większe niż lub równe 

 

background image

Piotr Bubacz 

 

Moduł 3 

ITA-103 Aplikacje Internetowe 

 

Podstawy JavaScript 

Strona 3-8 

Język JavaScript umożliwia porównanie nie tylko równości (==) ale również identyczności (===). Przy 
porównaniu  równości  porównanie  jest  dokonywane  bez  sprawdzania  typu,  zatem  5=="5".  Przy 
sprawdzaniu identyczności sprawdzana jest nie tylko wartośd, ale i typ zmiennych.  

Sterowanie 
W każdym języku programowania instrukcje sterujące określają kolejnośd wykonywania obliczeo.  

Instrukcja warunkowa if 

Instrukcję if stosuje się przy podejmowaniu decyzji. Formalnie możemy ją zapisad jako: 

if (wyrazenie)  
  instrukcja_1 
else  
  instrukcja_2 

Jeśli  wyrażenie  wyrazenie  jest  spełnione,  to  wykonywana  jest  instrukcja_1  w  przeciwnym 
przypadku wykonywana jest instrukcja_2. 

Instrukcja warunkowa switch 

Instrukcja  switch  służy  do  podejmowania  decyzji  wielowariantowych,  w  których  sprawdzana  się, 
czy wartośd pewnego wyrażenia pasuje do jednej z kilku całkowitych stałych wartości, jeśli tak, to 
przy pomocy instrukcji break następuje wyjście z porównania. Formalnie możemy ją zapisad jako: 

switch (wyrazenie) { 
  case wyrazenie_stale_1: instrukcja_1; break; 
  case wyrazenie_stale_2: instrukcja_2 ; break; 
  default: instrukcja_3; 

Instrukcja następująca po słowie default (w tym przypadku instrukcja_3) zostanie wykonana, 
jeśli wyrażenie nie spełniło żadnego z wyrażeo stałych. 

Pętle  

Pętle  umożliwiają  powtórzenie  pewnych  instrukcji  dopóki  nie  zostanie  spełniony  określony 
warunek. 

Jedną z pętli dostępnych w języku JavaScript jest pętla for. Formalnie możemy ją zapisad jako: 

for (stanPoczatkowy; warunekZakonczenia; zmiany) 
    lista_instrukcji 

Na  początku  zostanie  ustalony  stan  początkowy  zdefiniowany  w  stanPoczatkowy.  Następnie 
pętla będzie wykonywana aż do spełnienia warunku określonego w  warunekZakonczenia. Przy 
każdej iteracji pętli będą wykonywane operacje umieszczone w zmiany. 

Bardzo pomocną pętlą jest pętla for/in. Pętla ta umożliwia przeglądanie kolekcji obiektów – jest 
podobna do pętli foreach w języku C#. Formalnie możemy ją zapisad jako: 

for (var element in kolekcja) 
    lista_instrukcji 

gdzie  kolekcja  jest  kolekcją  obiektów,  a  element  jest  poszczególnym  (kolejnym)  elementem  w 
kolekcji podczas jej przeglądania. 

Kolejną  pętlą  jest  pętla  while.  Umożliwia  ona  wykonywanie  ciągu  instrukcji  aż  do  spełnienia 
określonego warunku sprawdzanego na początku działania pętli. Formalnie możemy ją zapisad jako: 

while (warunekKoncowy) 
    lista_instrukcji  

Ponieważ warunek sprawdzany jest na początku pętla ta może się nie wykonad ani razu. 

background image

Piotr Bubacz 

 

Moduł 3 

ITA-103 Aplikacje Internetowe 

 

Podstawy JavaScript 

Strona 3-9 

Pętlą  podobną  jest  pętla  do-while.  W  tej  pętli  najpierw  następuje  przetwarzanie  a  później 
sprawdzenie warunku. Formalnie możemy ją zapisad jako: 

do { 
    lista_instrukcji } 
while (warunekKoncowy); 

Praca z JavaScript w Visual Studio 2008 
Nowości wprowadzonymi do Visual Studio w wersji 2008 są IntelliSense i debugowanie dla języka 
JavaScript. 

InteliSens  to  automatyczne,  kontekstowe  uzupełnianie  –  podpowiadanie  kodu  i  konstrukcji 
językowych  dostępne  m.in.  w  VisualStudio.  Dotychczas  ta  technologia  nie  wspierała  języka 
JavaScript.  Teraz  mamy  możliwośd  podejrzenia  listy  możliwych  poleceo,  jak  również  argumentów 
funkcji (Rys. 2)

 

 

Rys. 2 Przykład użycia technologii IntelliSense w VisualStudio dla języka JavaScript 

Visual Studio umożliwia  łatwe debugowanie  aplikacji  JavaScript. Możemy  w dowolnym  miejscu w 
kodzie  ustawid punkt przerwania  (breakpoint) i uruchamiad aplikację  krok po  kroku. Możliwe  jest 
również, w oknie Watch, przeglądanie i edycja właściwości dowolnych zmiennych i obiektów (). 

 

Rys. 3 Przykład przerwania wykonania aplikacji oraz podgląd obiektu form 

background image

Piotr Bubacz 

 

Moduł 3 

ITA-103 Aplikacje Internetowe 

 

Podstawy JavaScript 

Strona 3-10 

Szczegółowe  informacje  o  możliwościach  pracy  z  IntelliSense  i  debugowaniem  w  Visual  Studio 
możemy znaleźd na blogu Scott Guthrie umieszczonego w dodatkowych źródłach informacji. 

Podsumowanie  
W  tym  rozdziale  przedstawione  zostały  podstawy  języka  JavaScript  oraz  wprowadzenie  do  pracy 
z tym językiem w VisualStudio 2008. 

Uwagi dla studenta 

Jesteś przygotowany do realizacji laboratorium jeśli: 

 

umiesz dodawad kod JavaScript do strony HTML 

 

potrafisz napisad prostą aplikację w JavaScript  

 

wiesz, co umożliwia IntelliSense i jak uruchomid debugowanie w Visual Studio 2008 

Pamiętaj  o  zapoznaniu  się  z  uwagami  i  poradami  zawartymi  w  tym  module.  Upewnij  się,  że 
rozumiesz omawiane w nich zagadnienia. Jeśli masz trudności ze zrozumieniem tematu zawartego 
w uwagach, przeczytaj ponownie informacje z tego rozdziału i zajrzyj do notatek z wykładów. 

Dodatkowe źródła informacji 

1.  Scott 

Guthrie, 

VS 

2008 

JavaScript 

Intellisense 

ScottGu's 

Blog 

http://weblogs.asp.net/scottgu/archive/2007/06/21/vs-2008-javascript-intellisense.aspx 

Na blogu autor prezentuje możliwości technologii Intellisense w języku JavaScript. 

2.  Scott 

Guthrie, 

VS 

2008 

JavaScript 

Debugging 

ScottGu's 

Blog

http://weblogs.asp.net/scottgu/archive/2007/07/19/vs-2008-javascript-debugging.aspx 

Na  blogu autor prezentuje  możliwości debugowania aplikacji napisanych w języku 
JavaScript. 

3.  Danny Goodman, JavaScript. Biblia, Helion 

W  książce  znajdziesz  wszystko,  co  jest  ważne  przy  tworzeniu  aplikacji  w  języku 
JavaScript.  Na  prawie  1500  stronach  autor  umieścił  prawie  wszystko  co  chciałbyś 
wiedzied o tym języku.  

4.  Shelley Powers, JavaScript. Wprowadzenie, Helion  

W  książce  autor  przedstawił  praktyczne  wprowadzenie  do  języka  JavaScript. 
Z książki  nauczysz  się  przechwytywad  zdarzenia  zachodzące  w  oknie  przeglądarki, 
sprawdzad  dane  wprowadzane  przez  użytkowników  do  formularzy  na  stronach 
WWW  oraz  korzystad  z  plików  cookie.  Poznasz  obiektowy  model  dokumentu 
(DOM), technologię AJAX i dodatkowe biblioteki. 

 

 

background image

Piotr Bubacz 

 

Moduł 3 

ITA-103 Aplikacje Internetowe 

 

Podstawy JavaScript 

Strona 3-11 

Laboratorium podstawowe 

Problem 1 (czas realizacji 20 min) 

Jesteś właścicielem niewielkiej firmy i Twój pracownik przygotował prostą ankietę w języku HTML 
umożliwiającą  pobranie  od  użytkownika  podstawowych  informacji  dotyczących  imienia,  adresu, 
wzrostu i zakresu cen. Ankieta została przedstawiona na Rys. 4. 

 

Rys. 4 Ankieta 

Niestety klient zażyczył sobie aby dodad sprawdzenie danych po stronie przeglądarki: 

 

Pola wymagane: 

 

Imie 

 

E-mail 

 

Cena od i do 

 

Sprawdzenie poprawności wpisanych wartości dla pól: 

 

E-mail (e-mail w formacie nazwa@serwer.domena) 

 

Kod pocztowy (kod odpowiedni dla naszego kraju) 

 

Wzrost (zakres od 40 do 250 cm) 

 

Wartości w polach od i do wpisane odpowiednio  

Twoim zadaniem jest przygotowanie odpowiednich skryptów w języku JavaScript umożliwiających 
spełnienie oczekiwao klienta. 

Zadanie 

Tok postępowania 

1.  Utwórz nową 
stronę w Visual 
Studio 2008 
Express Edition 

 

Otwórz Visual Studio 2008

 

Z menu wybierz File -> New -> Web Site

 

Z listy Visual Studio installed templates wybierz Empty Web Site

 

Z listy Location wybierz File System, a w polu obok określ lokalizację dla 
pliku w dowolnym miejscu na dysku. 

 

Kliknij OK

background image

Piotr Bubacz 

 

Moduł 3 

ITA-103 Aplikacje Internetowe 

 

Podstawy JavaScript 

Strona 3-12 

2.  Dodaj do 
projektu 
utworzone przez 
pracownika pliki 

 

Wybierz  Website->Add  Existing  Item  a  następnie  wskaż  plik 
Ankieta.htm

 

Podobnie dodaj plik Style.css

 

Wybierz prawym przyciskiem myszy plik Ankieta.htm i wybierz View in 
Browser

3.  Dodaj nowy 
plik, który będzie 
zawierał kod 
sprawdzający 

 

Wybierz Website->Add New Item a następnie w oknie Add New Item

—  W obszarze Templates wybierz JScript File 
—  W polu Name wpisz Walidacja.js 

 

Otwórz  plik  Ankieta.htm  i  z  okna  Solution  Explorer  przeciągnij  plik 
Walidacja.js do środka znacznika head na stronie. 

 

Zapisz zmiany. 

4.  Dodanie 
funkcji walidującej 
formularz i 
sprawdź, czy 
wymagane w 
zadaniu pola są 
wypełnione 

 

Do pliku Walidacja.js wpisz następujący kod: 

function sprawdz ( form ) 

  if (form.imie.value == "") { 
    alert( "Proszę wprowadzić imię." ); 
    form.imie.focus(); 
    return false ; } 
  if (form.email.value == "") { 
    alert( "Proszę wprowadzić adres email." ); 
    form.email.focus(); 
    return false ; } 
  if (form.cenaOd.value == "") { 
    alert( "Proszę wprowadzić wartość od." ); 
    form.cenaOd.focus(); 
    return false ; } 
  if (form.cenaDo.value == "") { 
    alert( "Proszę wprowadzić wartość do." ); 
    form.cenaDo.focus(); 
    return false ; } 
  return true ; } 

 

W  pliku  Ankieta.htm  do  znacznika  form  dodaj  właściwośd 
onsubmit="return sprawdz(this)" tak, aby znacznik wyglądał jak 
poniżej  

<form name="ankietaSklepu" onsubmit="return sprawdz(this)"> 

 

Zapisz oba pliki i otwórz plik Ankieta.htm w przeglądarce. Sprawdź, czy 
możesz wysład formularz  (wcisnąd  przycisk  Wyślij) bez wypełnienia pól 
wymaganych. 

5.  Sprawdź 
poprawnośd 
adresu e-mail 

 

W  pliku  Walidacja.js  poniżej funkcji  sprawdz  dodaj funkcje  adresEmail 
sprawdzającą  przy  pomocy  wyrażenia  regularnego  poprawnośd 
wpisanego adresu E-mail wpisz: 

function adresEmail( adres ) { 
  var regex = /^[a-zA-Z0-9._-]+@([a-zA-Z0-9.-]+\.)+ 
             

  [a-zA-Z0-9.-]{2,4}$/; 

  return regex.test(adres); } 

 

W funkcji sprawdz powyżej linii return true wpisz: 

if (!adresEmail(form.email.value)) { 
  alert( "Proszę wprowadzić poprawny adres email \n w formacie: 
nazwa@serwer.domena." ); 
  form.email.focus(); 
return false ; } 
 

background image

Piotr Bubacz 

 

Moduł 3 

ITA-103 Aplikacje Internetowe 

 

Podstawy JavaScript 

Strona 3-13 

 

Zapisz  plik  Walidacja.js  i  otwórz  plik  Ankieta.htm  w  przeglądarce. 
Sprawdź,  czy  możesz  wysład  formularz  (wcisnąd  przycisk  Wyślij 
wypełniając pole E-mail w złym formacie. 

6.  Sprawdź 
poprawnośd kodu 
pocztowego 

 

W  pliku  Walidacja.js  poniżej  funkcji  sprawdz  dodaj  funkcje 
kodPocztowy 

function kodPocztowy( kod ) { 
  var regex = /^[0-9]{2}\-[0-9]{3}$/; 
  return regex.test(kod); } 

 

W funkcji sprawdz powyżej linii return true wpisz: 

if (!kodPocztowy(form.kodPocztowy.value)) { 
  alert( "Proszę wprowadzić poprawny kod pocztowy." ); 
  form.kodPocztowy.focus(); 
  return false ; } 

 

Zapisz  plik  Walidacja.js  i  otwórz  plik  Ankieta.htm  w  przeglądarce. 
Sprawdź,  czy  możesz  wysład  formularz  (wcisnąd  przycisk  Wyślij 
wypełniając pole Kod pocztowy w złym formacie. 

7.  Sprawdź 
poprawnośd 
wpisanej wartości 
w polu Wzrost 

 

W  pliku  Walidacja.js  poniżej  funkcji  sprawdz  dodaj  funkcje 
sprawdzWzrost. Dodatkowo dodaj funkcje pomocniczą liczbaCalkowita

function liczbaCalkowita( liczba ) { 
  var regex = /^[\-]{0,1}[0-9]{1,8}$/; 
  return regex.test(liczba); } 
 
function sprawdzWzrost( liczba ) { 
  if (!liczbaCalkowita(liczba)) { return false ;} 
  var wzrost=parseInt(liczba); 
  if((wzrost<40) || (wzrost>250)) {return false;} 
  return true; } 

 

W funkcji sprawdz powyżej linii return true wpisz: 

if (!sprawdzWzrost(form.wzrost.value)) { 
  alert( "Proszę wprowadzić poprawny wzrost w cm. (zakres 40-
250cm)" ); 
  form.wzrost.focus(); 
  return false ; } 

 

Zapisz  plik  Walidacja.js  i  otwórz  plik  Ankieta.htm  w  przeglądarce. 
Sprawdź,  czy  możesz  wysład  formularz  (wcisnąd  przycisk  Wyślij 
wypełniając pole Wzrost w złym formacie. 

8.  Sprawdź 
poprawnośd 
wpisanych 
wartości w polach 
Od i Do 

 

W  pliku  Walidacja.js  poniżej  funkcji  sprawdz  dodaj  funkcje 
sprawdzOdDo przyjmującą dwa parametry cenaOd i cenaDo 

function sprawdzOdDo( cenaOd, cenaDo) { 
  if (!liczbaCalkowita(cenaOd)) { return false ;} 
  if (!liczbaCalkowita(cenaDo)) { return false ;} 
  var zakres=parseInt(cenaDo)-parseInt(cenaOd); 
  if(zakres<0){return false;} 
  return true; } 

 

W funkcji sprawdz powyżej linii return true wpisz: 

if (!sprawdzOdDo(form.cenaOd.value,form.cenaDo.value)) { 
  alert( "Proszę wprowadzić poprawny zakres cenowy" ); 
  form.wzrost.focus(); 
  return false ; } 
 
 

background image

Piotr Bubacz 

 

Moduł 3 

ITA-103 Aplikacje Internetowe 

 

Podstawy JavaScript 

Strona 3-14 

 

Zapisz  plik  Walidacja.js  i  otwórz  plik  Ankieta.htm  w  przeglądarce. 
Sprawdź,  czy  możesz  wysład  formularz  (wcisnąd  przycisk  Wyślij 
wypełniając pole od i do wartościami innymi niż liczba oraz umieszczając 
w polu od większą wartośd niż w polu do. 

 

Problem 2 (czas realizacji 25 min) 

Zbliża się termin oddania projektu dla ważnego klienta, gdy nagle okazuje się, że brakuje istotnego 
elementu jakim jest formularz rejestracji nowego użytkownika na stronie. Formularz ma zawierad 
jedynie trzy pola nazwa i dwa razy hasło, jednak klient zażyczył sobie następującą funkcjonalnośd 
realizowaną w przeglądarce: 

 

nazwa użytkownika ma mied co najmniej 5 znaków, nie więcej jednak jak 10 i może zawierad 
tylko litery 

 

hasło ma mied co najmniej 7 znaków i ma byd wyświetlana informacja o sile hasła. 

Dodatkowo hasło powinno posiadad możliwośd określenia poziomu jego zabezpieczenia – podczas 
tworzenia użytkownik ma byd powiadamiany o sile hasła. Wszystkie informacje mają pojawiad się  
obok pola do wpisywania. 

 

Zadanie 

Tok postępowania 

1.  Utwórz nową 
stronę w Visual 
Studio 2008 
Express Edition 

 

Otwórz Visual Studio 2008

 

Z menu wybierz File -> New -> Web Site

 

Z listy Visual Studio installed templates wybierz Empty Web Site

 

Z listy Location wybierz File System, a w polu obok określ lokalizację dla 
pliku w dowolnym miejscu na dysku. 

 

Kliknij OK

2.  Dodaj do 
projektu 
utworzone przez 
pracownika pliki 

 

Wybierz  Website->Add  Existing  Item  a  następnie  wskaż  plik 
Rejestracja.htm

 

Podobnie dodaj plik StyleRej.css

 

Wybierz prawym przyciskiem myszy plik Rejestracja.htm i wybierz View 
in Browser

3.  Umieśd na 
formularzu pola 
do których będą 
wpisywane 
informacje o 
błędach 

 

Otwórz  stronę  Rejestracja.htm  za  polem  input  o  właściwości 
name="nazwa" umieśd następujący znacznik: 

<span id="zlaNazwa"></span> 

 

Za  polem  input  o  właściwości  name="haslo"  umieśd  następujący 
znacznik: 

<span id="opisHasla"></span> 

 

Za  polem  input  o  właściwości  name="haslo2"  umieśd  następujący 
znacznik: 

<span id="zgodneHasla"></span> 

 

Zapisz zmiany. 

4.  Dodaj styl do 
wyświetlania 
informacji o 
błędach na 
stronie 

 

Do pliku StyleRej.css dodaj następujący styl: 

.wyroznienieCzerwone{ 
  padding-left:10px; 
  color:Red; 
  font-weight:600; } 

background image

Piotr Bubacz 

 

Moduł 3 

ITA-103 Aplikacje Internetowe 

 

Podstawy JavaScript 

Strona 3-15 

5.  Sprawdź liczbę 
znaków w nazwie 
użytkownika i 
haśle  

 

Wybierz Website->Add New Item a następnie w oknie Add New Item
—  W obszarze Templates wybierz JScript File 
—  W polu Name wpisz Rejestracja.js 

 

Otwórz  plik  Rejestracja.htm  i  z  okna  Solution  Explorer  przeciągnij 
dodany plik do środka znacznika head na stronie. 

 

W  pliku  Rejestracja.htm  do  znacznika  form  dodaj  właściwośd 
onsubmit="return sprawdz(this)". 

 

Zapisz zmiany. 

 

W pliku Rejestracja.js dodaj następujący kod: 

function sprawdz (form){  
var user=form.nazwa.value; 
if ((user.length<5) || (user.length>10)) { 
  document.getElementById("zlaNazwa").innerHTML = "Nazwa 
użytkownika może mieć od 5 do 10 liter"; 
  document.getElementById("zlaNazwa").className = 
"wyroznienieCzerwone"; 
  form.nazwa.focus; 
  return false; } 
  else { document.getElementById("zlaNazwa").innerHTML = "";} 
if (form.haslo.value.length < 7) { 
  document.getElementById("opisHasla").innerHTML = "Proszę 
wprowadzić hasło co najmniej 7 literowe."; 
  document.getElementById("opisHasla").className = 
"wyroznienieCzerwone"; 
  form.haslo.focus(); 
  return false ; } 
return true; 

 

Zapisz  plik  Rejestracja.js  i  otwórz  plik  Rejestracja.htm  w  przeglądarce. 
Sprawdź,  czy  możesz  wysład  formularz  (wcisnąd  przycisk  Wyślij.  Wpisz 
nazwę użytkownika i hasło zawierające odpowiednią liczbę znaków. 

6.  Sprawdź znaki 
w nazwie 
użytkownika  

 

W  pliku  Rejestracja.js  w  funkcji  sprawdz  powyżej  linii  return  true 
dodaj następujący kod: 

if (!((user.match(/[a-z]/)) || (user.match(/[A-Z]/)))) { 
  document.getElementById("zlaNazwa").innerHTML = "Nazwa 
użytkownika zawierać tylko litery"; 
  document.getElementById("zlaNazwa").className = 
"wyroznienieCzerwone"; 
  form.nazwa.focus; 
  return false; } 
  else { document.getElementById("zlaNazwa").innerHTML = ""; } 

 

Zapisz  plik  Rejestracja.js  i  otwórz  plik  Rejestracja.htm  w  przeglądarce. 
Sprawdź,  czy  możesz  wysład  formularz  (wcisnąd  przycisk  Wyślij.  Wpisz 
nazwę użytkownika zawierające inne znaki niż małe czy duże litery. 

7.  Sprawdź 
zgodnośd 
wpisanych haseł 

 

W  pliku  Rejestracja.js  w  funkcji  sprawdz  powyżej  linii  return  true 
dodaj następujący kod: 

if (form.haslo.value!=form.haslo2.value) { 
  document.getElementById("zgodneHasla").innerHTML = "Hasła nie są 
zgodne!"; 
  document.getElementById("zgodneHasla").className = 
"wyroznienieCzerwone"; 
  return false; } 

 

Zapisz  plik  Rejestracja.js  i  otwórz  plik  Rejestracja.htm  w  przeglądarce. 
Sprawdź,  czy  możesz  wysład  formularz  (wcisnąd  przycisk  Wyślij.  Wpisz 
różne hasła w polach. 

background image

Piotr Bubacz 

 

Moduł 3 

ITA-103 Aplikacje Internetowe 

 

Podstawy JavaScript 

Strona 3-16 

8.  Dodaj 
możliwośd 
wyświetlania 
informacji o sile 
hasła 

 

W  pliku  Rejestracja.htm  do  pola  Input  o  właściwości  name="haslo" 
dodaj właściwośd onkeyup="silaHasla(this.value)" 

 

Do pliku Rejestracja.js dodaj następująca funkcję: 

function silaHasla( haslo ) { 
  var punkty=0; 
  if (haslo.length >=7) punkty++;  
  if ((haslo.match(/[a-z]/)) && (haslo.match(/[A-Z]/))) punkty++; 
  if (haslo.match(/\d+/)) punkty++; 
  if (haslo.match(/.[!,@,#,$,%,^,&,*,?,_,~,-,(,)]/) ) punkty++; 
  if (punkty<1) { 
    document.getElementById("opisHasla").innerHTML = "Bardzo 
słabe"; 
    document.getElementById("opisHasla").className = 
"opisHaslaBardzoSlabe"}  
  else if (punkty<2) { 
    document.getElementById("opisHasla").innerHTML = "Słabe"; 
    document.getElementById("opisHasla").className = 
"opisHaslaSlabe"} 
  else if (punkty<3){ 
    document.getElementById("opisHasla").innerHTML = "Średnie"; 
    document.getElementById("opisHasla").className = 
"opisHaslaSrednie"} 
  else { 
    document.getElementById("opisHasla").innerHTML = "Silne"; 
    document.getElementById("opisHasla").className = 
"opisHaslaSilne"} } 

 

Do  pliku  StyleRej.css  dodaj  następujące  stylu  umożliwiające 
wyświetlenie w różnych kolorach informacji o sile hasła: 

.opisHaslaBardzoSlabe 
{ padding-left:10px; 
  color:Red; } 
 
.opisHaslaSlabe 
{ padding-left:10px; 
  color:Maroon; } 
 
.opisHaslaSrednie 
{ padding-left:10px; 
  color:Yellow; } 
 
.opisHaslaSilne 
{ padding-left:10px; 
  color:Green; } 

 

Zapisz  plik  Rejestracja.js  i  otwórz  plik  Rejestracja.htm  w  przeglądarce. 
Sprawdź,  jak  zachowuje  się  strona  przy  wpisywaniu  hasła.  Wymyśl 
hasło, które zostanie ocenione jako silne. 

 

 

background image

Piotr Bubacz 

 

Moduł 3 

ITA-103 Aplikacje Internetowe 

 

Podstawy JavaScript 

Strona 3-17 

Laboratorium rozszerzone 

Twoim zadaniem jest przygotowanie i walidacja ankiety dla agencji modelek i modeli „Modelinki”. 
Strona  ankiety  musi  umożliwid  pobranie  od  każdego  chętnego  do  pracy  w  charakterze  modela 
następujących informacji: 

 

imię  

 

nazwisko 

 

adres zamieszkania 

 

telefon  

 

e-mail 

 

wiek 

 

wzrost  

 

waga 

 

kolor włosów 

 

kolor oczu 

 

rozmiar ubrania 

 

numer butów 

 

doświadczenie (wybierane od 1 do 5) 

 

płed 

Po wybraniu płci użytkownikowi zostaje wyświetlony albo formularz dla kobiet albo dla mężczyzn, 
który umożliwia pobranie następujących informacji: 

 

w przypadku kobiet: 

 

obwód biustu 

 

wielkośd miseczki 

 

talia 

 

biodra  

 

długośd nogi  

 

w przypadku mężczyzn: 

 

klatka 

 

pas 

 

długośd nogi 

Ponieważ wszystkie pola są wymagane opracuje schemat sprawdzania pola w odpowiedniej funkcji. 

Sprawdzenie poprawności wpisanych wartości ma odbywad się dla pól: 

 

E-mail (e-mail w formacie nazwa@serwer.domena) 

 

Kod pocztowy (kod odpowiedni dla naszego kraju) 

 

Wzrost – liczba w zakresie od 40 do 250 cm, 

 

Waga – liczba w zakresie od 20 do 80 kg 

Wszystkie operacje sprawdzenia poprawności i wyświetlania elementów dla kobiet i mężczyzn maja 
byd realizowane po stronie klienta w przeglądarce!