Krótki wstęp dla rozpoczynających naukę JavaScript – Kontynuacja

W pierwszej części artykułu przeanalizowaliśmy kilka bardzo niezwykle ciekawych zastosowań JavaScript. Jeszcze lepszą wiadomością jest fakt, że to dopiero zaledwie zaczątek wspaniałych możliwości tego języka. Do tej pory poznaliśmy wbudowaną funkcję document.getElementById. Dzięki niej możemy pobrać element o podanym ID i dowolnie modyfikować między innymi jego style i zawartość (innerHTML). Ale cóż zrobić, gdy chcemy zmienić więcej niż jeden element? Wiadomo przecież, że nadawanie tego samego ID wielu elementom nie należy do dobrych praktyk. Na nasze szczęście istnieje funkcja document.getElementsByClassName pobierająca do tablicy wszystkie elementy o podanej nazwie klasy. Dosyć już tych wątpliwości i obietnic. Czas na konkretny kod 🙂 Rozważmy następujący dokument HTML (z życia wzięty :-p)
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
Zmiana stylów - klasy
<p class="niebieski">Jestem niebieski?</p>
<p class="niebieski">Jestem niebieski?</p>
<p class="niebieski">Jestem niebieski?</p>
<button id="przyciskNiebieski">Zmień na niebieski</button>
Zmiana stylów - klasy <p class="niebieski">Jestem niebieski?</p> <p class="niebieski">Jestem niebieski?</p> <p class="niebieski">Jestem niebieski?</p> <button id="przyciskNiebieski">Zmień na niebieski</button>
Zmiana stylów - klasy

Jestem niebieski?

Jestem niebieski?

Jestem niebieski?

Jeżeli domyślne ustawienia przeglądarki nie zostały zmienione, tekst w paragrafach klasy niebieski będzie koloru czarnego. Chcemy, aby po wcisinięciu przyciku “Zmień na niebieski” kolor tekstu owych elementów zmienił się na…niebieski 🙂 JavaScript nam w tym pomoże.
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
var przyciskNiebieski; // tutaj przypiszemy nasz przycisk
przyciskNiebieski = document.getElementById('przyciskNiebieski');
przyciskNiebieski.onclick = function(){ // po wcisnięciu przycisku
var niebieskie; // tu zostanie przypisana tablica elementów klasy “niebieski”
niebieskie = document.getElementsByClassName('niebieski'); // używany funkcji getElementsByClassName
// zmienna niebieskie jest tablicą.
for(var i = 0; i < niebieskie.length; i++){ // skorzystajmy z pętli for aby dostać się do elementów tablicy niebieskie
niebieskie[i].style.color = 'blue'; // zmieńmy kolor każdego elementu na niebieski
niebieskie[i].innerHTML = 'Jestem niebieski! :-D'; // zmieńmy zawartość każdego elementu
}
}
var przyciskNiebieski; // tutaj przypiszemy nasz przycisk przyciskNiebieski = document.getElementById('przyciskNiebieski'); przyciskNiebieski.onclick = function(){ // po wcisnięciu przycisku var niebieskie; // tu zostanie przypisana tablica elementów klasy “niebieski” niebieskie = document.getElementsByClassName('niebieski'); // używany funkcji getElementsByClassName // zmienna niebieskie jest tablicą. for(var i = 0; i < niebieskie.length; i++){ // skorzystajmy z pętli for aby dostać się do elementów tablicy niebieskie niebieskie[i].style.color = 'blue'; // zmieńmy kolor każdego elementu na niebieski niebieskie[i].innerHTML = 'Jestem niebieski! :-D'; // zmieńmy zawartość każdego elementu } }
var przyciskNiebieski; // tutaj przypiszemy nasz przycisk

przyciskNiebieski = document.getElementById('przyciskNiebieski');

przyciskNiebieski.onclick = function(){ // po wcisnięciu przycisku

var niebieskie; // tu zostanie przypisana tablica elementów klasy “niebieski”

niebieskie = document.getElementsByClassName('niebieski'); // używany funkcji getElementsByClassName
// zmienna niebieskie jest tablicą.

for(var i = 0; i < niebieskie.length; i++){ // skorzystajmy z pętli for aby dostać się do elementów tablicy niebieskie
        niebieskie[i].style.color = 'blue'; // zmieńmy kolor każdego elementu na niebieski
        niebieskie[i].innerHTML = 'Jestem niebieski! :-D'; // zmieńmy zawartość każdego elementu
    }
}
W taki prosty sposób zmodyfikowaliśmy grupę elementów dokumentu HMTL. Skoro tak dobrze nam to idzie, dlaczego mielibyśmy nie poznać kolejnej (obiecuję, że już ostatniej w tym artykule) funkcji. document.getElementsByTagName pobiera wszystkie elementy o podanej nazwie tagu, np.: p, div, a itd. Zmieńmy kolor wszystkich paragrafów (p) na żółty. A co, nikt nam tego nie może zabronić. Przygotujmy sobie UI 🙂
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
Zmiana stylów - tagi
<button id="zmienParagrafy">Zmień paragrafy na zółte</button>
Zmiana stylów - tagi <button id="zmienParagrafy">Zmień paragrafy na zółte</button>
Zmiana stylów - tagi

Pozwólmy javaScript zrobić resztę. Kod jest łudząco podobny do poprzedniego. Jedyną zmianą jest użycie funkcji getElementsByTagName zamiast getElementsByClassName
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
var zmienParagrafy;
zmienParagrafy = document.getElementById('zmienParagrafy');
zmienParagrafy.onclick = function(){
var zolte;
zolte = document.getElementsByTagName('p');
for(var i = 0; i < zolte.length; i++){
zolte[i].style.color = 'yellow';
zolte[i].innerHTML = 'Jestem żółty! :-D';
}
}
var zmienParagrafy; zmienParagrafy = document.getElementById('zmienParagrafy'); zmienParagrafy.onclick = function(){ var zolte; zolte = document.getElementsByTagName('p'); for(var i = 0; i < zolte.length; i++){ zolte[i].style.color = 'yellow'; zolte[i].innerHTML = 'Jestem żółty! :-D'; } }
var zmienParagrafy;

zmienParagrafy = document.getElementById('zmienParagrafy');

zmienParagrafy.onclick = function(){
var zolte;
zolte = document.getElementsByTagName('p');
for(var i = 0; i < zolte.length; i++){
        zolte[i].style.color = 'yellow';
        zolte[i].innerHTML = 'Jestem żółty! :-D';
    }
}
Prawda, że proste. Myślę, że najnudniejsze (sic) mamy za sobą. Z naszą obecną wiedzą i umiejętnościami bez problemu napiszemy zabezpieczenie dla numerów telefonów na stronie. Często na portalach ogłoszeniowch musimy klinkąć napis lub przycisk “Pokaż numer telefonu”, aby zobaczyć go w calości. Chroni to dane osobowe przed robotami zbierającymi informacje ze stron internetowych. Użytkownik odwiedzając nasz portal widzi:
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
Numer telefonu
Tel.:<span id="ukrytyTelefon">(starannie ukryty przed hakerami :-))</span><button id="pokazTelefon">Pokaż</button>
Numer telefonu Tel.:<span id="ukrytyTelefon">(starannie ukryty przed hakerami :-))</span><button id="pokazTelefon">Pokaż</button>
Numer telefonu

Tel.:(starannie ukryty przed hakerami :-))

Zamiarem jest, aby po wciśnięciu przycisku “Pokaż” oczom naszym ukazał się wspomniany już po wielokroć numer. Plan jest prosty: dodaj zdarzenie do przycisku o id “pokazTelefon”. w zdarzeniu tym zmień zawartość tagu span o id “ukrytyTelefon” na porzdąny numer ukryj przycisk o id “pokazTelefon”
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
var przyciskTelefon;
przyciskTelefon = document.getElementById('pokazTelefon');
przyciskTelefon.onclick = function(){
var telefon;
telefon = document.getElementById('ukrytyTelefon');
telefon.innerHTML = '600-451-010';
przyciskTelefon.style.display = ‘none’; // tutaj zmieniamy styl display na ‘none’, aby ukryć przycisk
}
var przyciskTelefon; przyciskTelefon = document.getElementById('pokazTelefon'); przyciskTelefon.onclick = function(){ var telefon; telefon = document.getElementById('ukrytyTelefon'); telefon.innerHTML = '600-451-010'; przyciskTelefon.style.display = ‘none’; // tutaj zmieniamy styl display na ‘none’, aby ukryć przycisk }
var przyciskTelefon;

przyciskTelefon = document.getElementById('pokazTelefon');

przyciskTelefon.onclick = function(){
var telefon;
telefon = document.getElementById('ukrytyTelefon');
telefon.innerHTML = '600-451-010';
przyciskTelefon.style.display = ‘none’; // tutaj zmieniamy styl display na ‘none’, aby ukryć przycisk
}
Bardzo prosta rzecz, a jakże praktyczna. Tak samo poczyńmy z adresem:
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
Adres
Adres.:<span id="ukrytyAdres">(starannie ukryty przed hakerami :-))</span><button id="pokazAdres">Pokaż</button>
Adres Adres.:<span id="ukrytyAdres">(starannie ukryty przed hakerami :-))</span><button id="pokazAdres">Pokaż</button>
Adres

Adres.:(starannie ukryty przed hakerami :-))

Do tego odrobina kodu JavaScript:
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
var przyciskAdres;
przyciskAdres = document.getElementById('pokazAdres');
przyciskAdres.onclick = function(){
var adres = document.getElementById('ukrytyAdres');
adres.innerHTML = 'Jan Kowalski
ul. Asfaltowa 1/2
23-444 Programerów';
// this - jak w innych jęzkach programowania jest to wskaźnik do aktualnego obiektu, czyli w tym przypadku - przyciskAdres
this.innerHTML = 'Ok, zrobione'; // zmień tekst przycisku
this.onclick = null; // usuń zdarzenie onclick
this.disabled = true; // ustaw przycisk jako nieaktywny
}
var przyciskAdres; przyciskAdres = document.getElementById('pokazAdres'); przyciskAdres.onclick = function(){ var adres = document.getElementById('ukrytyAdres'); adres.innerHTML = 'Jan Kowalski ul. Asfaltowa 1/2 23-444 Programerów'; // this - jak w innych jęzkach programowania jest to wskaźnik do aktualnego obiektu, czyli w tym przypadku - przyciskAdres this.innerHTML = 'Ok, zrobione'; // zmień tekst przycisku this.onclick = null; // usuń zdarzenie onclick this.disabled = true; // ustaw przycisk jako nieaktywny }
var przyciskAdres;

przyciskAdres = document.getElementById('pokazAdres');

przyciskAdres.onclick = function(){

var adres = document.getElementById('ukrytyAdres');

adres.innerHTML = 'Jan Kowalski
ul. Asfaltowa 1/2
23-444 Programerów';

// this - jak w innych jęzkach programowania jest to wskaźnik do aktualnego obiektu, czyli w tym przypadku - przyciskAdres
this.innerHTML = 'Ok, zrobione'; // zmień tekst przycisku
this.onclick = null; // usuń zdarzenie onclick
this.disabled = true; // ustaw przycisk jako nieaktywny
}
Następna część poradnika http://darkgl.pl/2015/05/04/krotki-wstep-dla-rozpoczynajacych-nauke-javascript-kontynuacja-2/ Adam Sawicki – programista aplikacji internetowych, obserwator nowych startup’ów i technologii webowych, autor kursu c++ dla początkujących cpp.jcom.pl

Dodaj komentarz

This site uses Akismet to reduce spam. Learn how your comment data is processed.