JavaScript. Wstęp do podstaw elementów. dr inż. Paweł Boiński, Politechnika Poznańska

Podobne dokumenty
Krótki kurs JavaScript

Tworzenie Stron Internetowych. odcinek 10

Zajęcia 4 - Wprowadzenie do Javascript

JavaScript funkcyjność

XML extensible Markup Language. część 5

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ),

Zdarzenia Zdarzenia onload i onunload

CZYM JEST JAVASCRIPT?

Języki skryptowe w programie Plans

XML extensible Markup Language. część 5

Rys.2.1. Trzy warstwy stanowiące podstawę popularnego podejścia w zakresie budowy stron internetowych [2]

Tworzenie stron internetowych z wykorzystaniem HTM5, JavaScript, CSS3 i jquery. Łukasz Bartczuk

PROGRAMOWANIE W ŚRODOWISKU FLASH wykład 2

Scenariusz Web Design DHTML na 10 sesji. - Strony statyczne I dynamiczne. - Dodawanie kodu VBScript do strony HTML. Rysunek nie jest potrzebny

JAVAScript w dokumentach HTML (1) JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania.

Laboratorium Wstawianie skryptu na stroną: 2. Komentarze: 3. Deklaracja zmiennych

Podstawy JavaScript ćwiczenia

Programowanie obiektowe

Wykład 03 JavaScript. Michał Drabik

JavaScript - wykład 4. Zdarzenia i formularze. Obsługa zdarzeń. Zdarzenia. Mysz. Logiczne. Klawiatura. Beata Pańczyk

Test przykładowy 2 PAI WSB Wrocław /06/2018

JavaScript. mgr inż. Remigiusz Pokrzywiński

Obiektowe bazy danych

Zaawansowane aplikacje internetowe

Techniki WWW. (HTML, CSS, JavaScript) Dr inż. Marcin Zieliński WYKŁAD 6. Środa 15:30-17:00 sala: A-1-04

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

JavaScript - korzenie

JAVASCRIPT PODSTAWY. opracowanie: by Arkadiusz Gawełek, Łódź

DIAGRAMY SYNTAKTYCZNE JĘZYKA TURBO PASCAL 6.0

Tworzenie stron internetowych z wykorzystaniem HTM5, JavaScript, CSS3 i jquery. Łukasz Bartczuk

Programowanie internetowe

Programowanie obiektowe

Systemy internetowe. Wykład 3 PHP. West Pomeranian University of Technology, Szczecin; Faculty of Computer Science

Właściwości i metody obiektu Comment Właściwości

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

WYKŁAD 4 JĘZYK JAVASCRIPT CZĘŚĆ 1

Dlaczego PHP? - zalety

Bazy Danych i Usługi Sieciowe

PHP: bloki kodu, tablice, obiekty i formularze

Wybrane działy Informatyki Stosowanej

Aplikacje WWW - laboratorium

Zakres treści Czas. 2 Określenie charakteru i tematyki strony. Rodzaje witryn. Projekt graficzny witryny. Opracowanie skryptów

Komentarze w PHP (niewykonywane fragmenty tekstowe, będące informacją dla programisty)

TECHNOLOGIE INTERNETOWE WYKŁAD 6. JavaScript Funkcje i obiekty

Wyrażenie include(sciezka_do_pliku) pozwala na załadowanie (wnętrza) pliku do skryptu php. Plik ten może zawierać wszystko, co może się znaleźć w

Podstawowe części projektu w Javie

Programowanie obiektowe

Programowanie obiektowe

JAVAScript tablice, przekazanie danych do funkcji, obiekty Date i window

Rys.2.1. Drzewo modelu DOM [1]

5-6. Struktura dokumentu html. 2 Określenie charakteru i tematyki strony. Rodzaje witryn. Projekt graficzny witryny. Opracowanie skryptów

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Bloki anonimowe w PL/SQL

Należy ściągnąć oprogramowanie Apache na platformę

JAVASCRIPT (cz. IV) ĆWICZENIA DO SAMODZIELNEGO WYKONANIA materiały dydaktyczne dla słuchaczy opracowanie: by Arkadiusz Gawełek, Łódź

Microsoft IT Academy kurs programowania

Systemy internetowe Wykład 3 PHP

Czym jest AJAX. AJAX wprowadzenie. Obiekt XMLHttpRequest (XHR) Niezbędne narzędzia. Standardowy XHR. XHR z obsługą baz danych

Tworzenie aplikacji w języku Java

Materiały do laboratorium MS ACCESS BASIC

JAVASCRIPT PODSTAWY. opracowanie: by Arkadiusz Gawełek, Łódź

Organizacja ucząca się Javascript - wprowadzenie

Funkcje i instrukcje języka JavaScript

Podstawy programowania skrót z wykładów:

Dokumentacja imapliteapi

Skrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać

Aplikacje WWW - laboratorium

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Michał Bielecki, KNI 'BIOS'

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

KOTLIN. Język programowania dla Androida

Stałe definiuje się używając funkcji define. Przykład: define( PODATEK, 22); define( INSTALACJAOS, 70); define( MS, Microsoft );

Wybrane działy Informatyki Stosowanej

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe

Cw.12 JAVAScript w dokumentach HTML

Umieszczanie kodu. kod skryptu

Lekcja 1. Składnia języka zmienne i podstawowe instrukcje PHP. Do wyświetlania tekstu służy instrukcja echo echo Hello world ;

Serwer WWW Apache. Plik konfiguracyjny httpd.conf Definiujemy m.in.: Aktualne wersje 2.4.6, , zakończony projekt

HTML, Javascript, CSS oraz Bootstrap

JAVAScript w dokumentach HTML - przypomnienie

JavaScript obiektowość

Obiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody

Swift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.)

Smarty PHP. Leksykon kieszonkowy

Oczywiście plik musi mieć rozszerzenie *.php

ZMIENNE. Podstawy PHP

Aplikacje internetowe

Swift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.)

Podstawy Programowania ELEMENTY PROGRAMU i TYPY DANYCH

Informacja o języku. Osadzanie skryptów. Instrukcje, komentarze, zmienne, typy, stałe. Operatory. Struktury kontrolne. Tablice.

JAVA. Platforma JSE: Środowiska programistyczne dla języka Java. Wstęp do programowania w języku obiektowym. Opracował: Andrzej Nowak

Podstawy Programowania C++

WYMAGANIA EDUKACYJNE I KRYTERIA OCENIANIA Z PRZEDMIOTU PROGRAMOWANIE APLIKACJI INTERNETOWYCH

Kurs WWW. Paweł Rajba.

Ogólny schemat prostego formularza: A może lepiej zamiast przycisku opartego o input tak:

Transkrypt:

JavaScript Wstęp do podstaw elementów dr inż. Paweł Boiński, Politechnika Poznańska

Wprowadzenie Historia Maj 1995-10 dni, Mocha, Netscape Wrzesień 1995 - Mocha -> LiveScript Grudzień 1995 - LiveScript - > JavaScript Konkurencja: JScript (Microsoft), ActionScript (Adobe) 1996-1997 - przekazany do ECMA (European Computer Manufacturers Association) celem standaryzacji Standard ECMAScript (ES6 2015 r.) JavaScript, ActionScript implementacja ECMAScript Zastosowania najczęściej uruchamiany po stronie klienta (w przeglądarce) może być uruchamiany po stronie serwera (node.js) można także pisać zwykłe aplikacje 2

Ogólne uwagi Wielkość liter ma znaczenie Automatyczny hoisting Specyficzny zasięg widoczności zmiennych Kontekst window globalny document dokumentu 3

Gdzie umieścić kod JavaScript? head <html> <head> <script> // </script> </head> <body> </body> </html> body <html> <head> <script language="javascript" type="text/javascript"> // </script> </head> <body> </body> przestarzałe wartość domyślna </html> zewnętrzny plik <html> <head> <script src="plik.js"></script> </head> <body> </body> </html> zalecane 4

Wyjście (1) window.alert(tekst) var x = 5; alert("test:" + x); window.console.log(obiekt)/console.dir(obiekt) var x = 5; console.log("test:" + x); 5

Wyjście (2) window.document.write(tekst) <html> <head></head> <body> <p>test</p> <script> document.write("a"); </script> <p>test</p> </body> </html> 6

Wejście window.prompt(nagłówek, domyślnie)) Pierwszy parametr to tzw. nagłówek Drugi parametr (opcjonalny) to wartość tekstowa pola var imie = prompt("podaj imię:", "Paweł"); window.confirm(pytanie) Zwraca true jeżeli naciśnięto OK, Zwraca false jeżeli naciśnięto Anuluj var odp = confirm("czy wysłać wiadomość?"); false true 7

Komentarze, operatory Komentarz Blokowy /* To jest Komentarz */ Liniowy var a = 5; // to jest komentarz Operatory porównania porównanie wartości == (np. true dla 1=="1") porównanie wartości i typu === (np. false dla 1==="1") Operatory logiczne && (AND) (OR)! (NOT) 8

Zmienne typowane dynamicznie Ta sama zmienna może raz przechowywać liczby, a innym razem łańcuchy znaków Skąd wiedzieć jaki jest aktualny typ zmiennej? duck typing Jeżeli coś wygląda jak kaczka, pływa jak kaczka i kwacze jak kaczka to prawdopodobnie jest kaczką Sprawdzamy na etapie wykonania, czy obiekt ma odpowiednie metody 9

Zmienne, funkcje Zmienne var x = 10; // nie ma "wymuszonego" typu Funkcje metody deklaracji function isok1(param1) { // instrukcje // return true; - opcjonalne var isok2 = function(param1, param2) { // instrukcje Wywołanie funkcji różne parametry lub ich brak isok1(100); isok1(); // param1 w funkcji ma wartość niezdefiniowaną isok1("aa"); 10

Typy danych Zmienna bez przypisania ma wartość undefined var a; console.log(a); // undefined Liczby - przechowywane jako double precision float var a = 5; var A = 5.5; // uwaga: wielkość liter ma znaczenie boolean tylko wartości true/false 11

Instrukcje sterujące if (warunek) { // instrukcje else { // opcjonalne // instrukcje switch (warunek) { case wartosc1: // instrukcje break; case wartosc1: // instrukcje break; // default: // instukcje break; // opcjonalne while (warunek) { // instrukcje do { // instrukcje while (warunek); for (instrukcje początkowe; warunek; instrukcje kroku) { // instrukcje Dopuszczalne wiele instrukcji początkowych for (własność in obiekt) { // instrukcje Kolejność nie jest zdefiniowana 12

Tablice (1) var samochody = ["AUDI", "BMW"]; samochody[3] = "VW"; for (s in samochody) { console.log(s); // 0 1 3 for (s of samochody) { console.log(s); // AUDI BMW undefined VW // for (var i=0; i < samochody.length; i++) { if (2 in samochody) // true if (3 in samochody) // false 13

Tablice (2) var x = new Array("HTML","CSS","JS"); // var x = ["HTML","CSS","JS"]; x[0] = "PHP"; console.log(x.length); // 3 console.log(x[5]) // undefined x["abc"] = "xyz"; console.log(x["abc"]); // xyz console.log(x.length); // 3 for (s in x) { console.log(s); // 0 1 2 abc for (s of x) { console.log(s); // PHP CSS JS x[10] = 5; console.log(x.length); // 11 Nie ma tablic asocjacyjnych W przykładzie "abc" to własność (property), którą ustawiliśmy dla obiektu 14

Tablice (3) var x = new Array(); x[0] = 2008; x[1] = "FIAT"; x[2] = {model: "126S" x[3] = function(stawka) {return stawka/100;; console.log(x[0]); console.log(x[1]); console.log(x[2].model); console.log(x[3](150)); 15

Obiekty (1) Obiekty to kontenery nazwanych wartości (ang. properties) var osoba = {imie: "Rysiu", nazwisko: "Kowalski", wzrost:159; Property Value imie Rysiu nazwisko Kowalski wzrost 159 object literal Dostęp do wartości osoba.imie // lub osoba['imie'] Built-in properties osoba.imie.length osoba['imie'].length 16

Obiekty (2) Tworzenie obiektów var rysiek = new Object(); osoba.imie = "Rysiu"; osoba.obliczwiek = function(aktualnadata) { return ; ; // lub (wersja object literal) var rysiek = { imie: "Rysiu", obliczwiek: function(aktualnadata) { return ; // lub (wersja z konstruktorem obiektowym) function osoba(im) { // osoba to konstruktor this.imie = im; this.obliczwiek = function(aktualnadata) { return ; var rysiek = new osoba("rysiu"); 17

Obiekty (3) Dostęp do pól console.log(osoba.imie); console.log(osoba.obliczwiek(new Date())); //lub console.log(osoba["imie"]); console.log(osoba["obliczwiek"](new Date())); Usuwanie pól delete osoba.imie; delete osoba["imie"]; Wbudowane konstruktory, m.in.: new Object(); new String(); new Number(); new Date(); W praktyce lepiej unikać używania operatora new (i stosować tzw. prymitywy) bardziej wydajne 18

Zasięg zmiennych Zmienne w JavaScript także obiekty i funkcje Zasięg (scope) to zmienne, obiekty i funkcje, do których mamy dostęp Rodzaje zasięgu lokalny zmienne w funkcjach, dostęp tylko z tych funkcji, niszczone wraz z funkcją Uwaga: zmienne niezadeklarowane w funkcjach, stają się zmiennymi globalnymi! globalny zmienne poza funkcjami, dostęp ze wszystkich skryptów i funkcji, niszczone np. po zamknięciu strony Parametry funkcji zachowują się jak zmienne lokalne w funkcjach 19

Zakres widoczności (1) var x = 1; f1(); function f1() { var x = 2; f2(); function f2() { console.log(x); // wynik 1 var x = 1; f1(); function f1() { console.log(x); f2(); function f2() { console.log(x); //wynik 1 1 var x = 1; f1(); function f1() { console.log(x); var x = 2; console.log(x); f2(); function f2() { console.log(x); //wynik undefined 2 1 20

Zakres widoczności (2) var x = 1; f1(); function f1() { x = 2; f2(); function f2() { console.log(x); // wynik 2 var x = 1; f1(); function f1() { console.log(x); var x = 2; f2(); function f2() { console.log(x); //wynik undefined 1 var x = 1; f1(); function f1() { console.log( parent.x); var x = 2; f2(); function f2() { console.log(x); //wynik 1 1 21

DOM - Document Object Model Obiektowa reprezentacja strony Standard opracowany przez W3C WHATWG Możliwość dynamicznej reakcji na zmiany (Dynamic HTML) Birger Eriksson, wikipedia.org 22

Zwracanych może być wiele elementów DOM & JavaScript // wyszukiwanie po identyfikatorze (jeden element maksymalnie) var myelem = document.getelementbyid("suma"); // wyszukiwanie po nazwie elementu var x = document.getelementsbytagname("footer"); // wyszukiwanie po nazwie klasy var x = document.getelementsbyclassname("student"); // wyszukiwanie po selektorze CSS (pierwsze dopasowanie) var x = document.queryselectorall("p.student"); // wyszukiwanie po selektorze CSS (wszystkie pasujące) var x = document.queryselectorall("p.student"); // wykorzystanie znalezionego elementu var footerelem = document.getelementbyid("footer"); var x = footerelem.getelementsbytagname("p"); 23

Poruszanie się po drzewie DOM Dla każdego węzła można użyć: parentnode childnodes[numer potomka] firstchild lastchild nextsibling previoussibling Uwaga na zawartość tekstową to także nowy węzeł <div id="nazwisko">kowalski</div> var myelem = document.getelementbyid("nazwisko"); var nazwisko = myelem.innerhtml; // lub var nazwisko = myelem.firstchild.nodevalue; 24

Modyfikowanie drzewa DOM <div id="demo">lista wiadomości</div> <script> var p = document.createelement("p"); var textn = document.createtextnode("nowa wiadomość"); p.appendchild(textn); var div = document.getelementbyid("demo"); div.appendchild(p); </script> Inne metody: insertbefore(nowy_potomek, przed_ktorym) removechild(potomek) replacechild(nowy, poprzedni) 25

Events <element event='kod JavaScript'> <element event="kod JavaScript"> <buton id="tb" onclick="displaytime()">pokaż czas</button> // lub document.getelementbyid("tb").onclick = displaytime; Event onchange onclick onmouseover onmouseout onkeydown onload Description An HTML element has been changed The user clicks an HTML element The user moves the mouse over an HTML element The user moves the mouse away from an HTML element The user pushes a keyboard key The browser has finished loading the page https://www.w3schools.com/jsref/dom_obj_event.asp 26

Event Listners element.addeventlistener("mouseover", funkcjaobslugi); element.addeventlistener("click", funkcjaobslugi); function funkcjaobslugi { // element.removeeventlistener("click", funkcjaobslugi); Propagacja bubbling najpierw obsługa zagnieżdżonego, potem zewnętrznego domyślne addeventlistener( zdarzenie, obsługa, false); capturing najpierw obsługa zewnętrznego, potem zagnieżdżonego addeventlistener( zdarzenie, obsługa, true); 27

Domknięcie Chcemy zrobić licznik, który będzie dostępny dla wszystkich, a jednocześnie będzie mógł być zmieniany tylko przez jedną funkcję Globalna zmienna nie zapewnia ochrony przed zmianą przez kogokolwiek Rozwiązanie: closure W JavaScript funkcje mogą być zagnieżdżone Funkcje mają dostęp do zakresu ponad nimi Zagnieżdżone funkcje mogą być dostępne na zewnątrz var increment = (function f1() { var counter = 0; //wykonywane tylko raz! return function () {return counter+=1; ) (); increment(); increment(); 28

Koniec 29