SlideShare a Scribd company logo
1 of 44
Download to read offline
JavaScript 3
DOM, Tillgänglighet, Exempel
Dagens föreläsning
1. Repetition
2. Mer DOM
3. Ex. Valutakonverterare
4. Tillgänglighet
5. this i JavaScript
6. Fler exempel
Vi har numera koll på…
• Variabler
• Datatyper
• Loopar
• If-satser
• Funktioner
If-satser
Loopar
Funktioner
Från funktioner till interaktiva webbsidor
Strukturera program med funktioner
• En funktion är en namngiven samling instruktioner
• Ofta är det lättare att tänka vad som ska utföras
• Funktioner låter oss separera ”vad” från ”hur”
• Definiera uppgiften, lista ut vilka indata som krävs, bestämma vad resultatet
ska vara.
Anropa en funktion vid musklick
• För varje element på en webbsida så kan man ange JavaScript som
ska köras vid ett musklick
• Typiskt anges en funktion som ska anropas
Händelsedriven programmering
• Detta är en form av händelsedriven programmering (event handling)
• Webbläsaren ”lyssnar” efter händelser (musklick) och reagerar
genom att anropa den funktion vi angivit
Att separera JavaScript från HTML
Problem: Att hitta rätta element i HTML-dokumentet, genom JavaScript
Att hitta ett HTML-element genom JavaScript
Att hitta flera HTML-element genom JavaScript
Att manipulera element genom JavaScript
• När vi i JavaScript letat upp ett element kan vi modifiera det
• Ta bort det
• Ändra ev. innehåll (text)
• Ändra CSS-egenskaper
• Ändra/lägga till/ta bort attribut
Exempel
JavaScript
HTML
Hmm… Men onclick är ju ett
attribut!?
Att koppla händelser till HTML-element (1)
Att koppla händelser till HTML-element (2)
När blir (2) smidigare än (1)?
JavaScript
HTML
JavaScript
HTML
Att tänka på:
Datorn läser koden i den ordning
som den står i.
Detta innebär att när vår JavaScript-fil läses in, så har datorn inte läst in hela
HTML-dokumentet och vet inte vilka element som finns…
Möjligheterna är oändliga med DOM
Några saker kan vara speciellt bra att ha sett:
• Ersätta innehåll i element
• Läsa och skriva till formulärselement
• Ändra CSS dynamiskt
Exempel
Valutakonverterare
Tillgänglighet
Vad händer om man har inaktiverat JavaScript i webbläsaren?
Inaktiverat JavaScript?
• Man kan inaktivera det manuellt
• På vissa företag inaktiveras det
• Gamla webbläsare stödjer ev. inte JavaScript fullt ut
Hur löser vi det?
Providing an alternative version of your
functionality or making the user aware of
shortcomings of a product as a safety
measure to ensure that the product is usable.
- Chrisitan Heilmann
Med andra ord…
1. Bygg webbplatser för moderna webbläsare
2. Identifiera kritisk funktionalitet och
1. Se till att detta fungerar i alternativa webbläsare
2. Berätta för användaren att något är fel och föreslå en metod för att fixa
detta
Exempel
<a href="javascript:window.print()">Print page</a>
- Fungerar inte utan JavaScript
Hur löser vi det?
<a href="javascript:window.print()">Print page</a>
<noscript>
<p class="scriptwarning">
Printing the page requires JavaScript.
Please turn it on in your browser.
</p>
</noscript>
Är det den smidigaste lösningen?
• Vad är JavaScript?
• Hur aktiverar jag det?
• Får inte använda JavaScript (företagsmiljö),
• kan inte använda JavaScript
• Aktivera JavaScript bara för att skriva ut?
Tänk på användaren
<a href="javascript:window.print()">Print page</a>
<noscript>
<p class="scriptwarning">
Print a copy of your confirmation.
Select the "Print" icon in your browser,
or select "Print" from the "File" menu.
</p>
</noscript>
Mer om DOM
Ett av de mest användbara
koncepten i JavaScript är this.
this refererar till det element som
utlöser en händelse.
this
• this i JavaScript är ett nyckelord.
JavaScript
HTML
Ex. this
Vi testar med en paragraf.
Varför är this så bra?
• Vid mängder av element! När vi vill säga att:
• På det element som användaren klickade på vill vi…
Listor…
Att loopa igenom alla element
• Hämta en mängd med element (en lista med element):
• document.querySelectorAll
• ”Loopa” igenom alla element som returneras, ex.
Exempel
This
Exempel
Visa/dölj avsnitt
Vad behöver vi veta?
1. Vi behöver identifiera:
1. Textfältet som vi skriver in vår ”att göra”
2. Knappen ”lägg till”
3. Listan där vi ska lägga till vår ”att göra”
4. Knappen ”rensa lista”
2. Vi behöver veta hur man:
1. Skapar ett element i JavaScript
2. Hur man tar bort element i JavaScript
Att skapa ett element i JavaScript
1. Ett element består av följande:
1. Ett element (t.ex. <li></li>)
2. Ev. attribut (t.ex <li class=”a”></li>)
3. Ev. textnod (t.ex. <li>lite text</li>)
2. För att skapa ett <li>-element skriver man:
var el = document.createElement(”li”);
3. För att skapa en textnod skriver man:
var text = document.createTextNode(”text”);
4. För att lägga in textnoden i elementet:
el.appendChild(text);
Att lägga till ett element på sidan
1. Vi behöver först ha skapat ett element
var el = document.createElement(”li”);
var text = document.createTextNode(”Hej”);
el.appendChild(text);
”el” innehåller nu ”<li>Hej</li>”
2. Leta upp det element vi vill lägga till ”<li>Hej</li>” i:
var target = document.getElementById(id);
target.appendChild(el);
Ta bort element
• Använder funktionen ”removeChild(child)”
T.ex.
<ul id=”list”>
<li>Hej</li>
</ul>
var list = document.getElementById(”list”);
List.removeChild(list.firstChild);

More Related Content

What's hot

HT16 - DA156A - Användbarhet 2
HT16 - DA156A - Användbarhet 2HT16 - DA156A - Användbarhet 2
HT16 - DA156A - Användbarhet 2Anton Tibblin
 
HT16 - DA156A - Introduktion till CSS
HT16 - DA156A - Introduktion till CSSHT16 - DA156A - Introduktion till CSS
HT16 - DA156A - Introduktion till CSSAnton Tibblin
 
HT17 - DA156A - Introduktion till CSS
HT17 - DA156A - Introduktion till CSSHT17 - DA156A - Introduktion till CSS
HT17 - DA156A - Introduktion till CSSAnton Tibblin
 
Webbapplikationer - HTML
Webbapplikationer - HTMLWebbapplikationer - HTML
Webbapplikationer - HTMLAnton Tibblin
 
VT17 - DA355A - Introduktion HTML
VT17 - DA355A - Introduktion HTMLVT17 - DA355A - Introduktion HTML
VT17 - DA355A - Introduktion HTMLAnton Tibblin
 
VT17 - DA355A - Intro JS
VT17 - DA355A - Intro JSVT17 - DA355A - Intro JS
VT17 - DA355A - Intro JSAnton Tibblin
 
HT17 - DA156A - Sammanfattning av kursen
HT17 - DA156A - Sammanfattning av kursenHT17 - DA156A - Sammanfattning av kursen
HT17 - DA156A - Sammanfattning av kursenAnton Tibblin
 
HT18 - DA156A - Introduktion till HTML
HT18 - DA156A - Introduktion till HTMLHT18 - DA156A - Introduktion till HTML
HT18 - DA156A - Introduktion till HTMLAnton Tibblin
 
HT19 - DA156A - Introduktion till HTML
HT19 - DA156A - Introduktion till HTMLHT19 - DA156A - Introduktion till HTML
HT19 - DA156A - Introduktion till HTMLAnton Tibblin
 
Webbapplikationer - Kursintroduktion (anton.tibblin@mah.se)
Webbapplikationer - Kursintroduktion (anton.tibblin@mah.se)Webbapplikationer - Kursintroduktion (anton.tibblin@mah.se)
Webbapplikationer - Kursintroduktion (anton.tibblin@mah.se)Anton Tibblin
 
HT17 - DA156A - Ramverk och bibliotek
HT17 - DA156A - Ramverk och bibliotekHT17 - DA156A - Ramverk och bibliotek
HT17 - DA156A - Ramverk och bibliotekAnton Tibblin
 
HT17 - DA156A - Layout med HTML & CSS
HT17 - DA156A - Layout med HTML & CSSHT17 - DA156A - Layout med HTML & CSS
HT17 - DA156A - Layout med HTML & CSSAnton Tibblin
 
HT17 - DA156A - CSS, Layout 2
HT17 - DA156A - CSS, Layout 2HT17 - DA156A - CSS, Layout 2
HT17 - DA156A - CSS, Layout 2Anton Tibblin
 
jQuery & HTML5 Cache
jQuery & HTML5 CachejQuery & HTML5 Cache
jQuery & HTML5 CacheAnton Tibblin
 
VT18 - DA355A - Introduktion till JavaScript
VT18 - DA355A - Introduktion till JavaScriptVT18 - DA355A - Introduktion till JavaScript
VT18 - DA355A - Introduktion till JavaScriptAnton Tibblin
 
Föreläsning 1: Grundläggande HTML
Föreläsning 1: Grundläggande HTMLFöreläsning 1: Grundläggande HTML
Föreläsning 1: Grundläggande HTMLJohannes Karlsson
 
HT17 - DA156A - Kursintroduktion
HT17 - DA156A - KursintroduktionHT17 - DA156A - Kursintroduktion
HT17 - DA156A - KursintroduktionAnton Tibblin
 
HT17 - DA156A - JavaScript i webbutveckling
HT17 - DA156A - JavaScript i webbutvecklingHT17 - DA156A - JavaScript i webbutveckling
HT17 - DA156A - JavaScript i webbutvecklingAnton Tibblin
 
VT17 - DA355A - Introduktion till CSS
VT17 - DA355A - Introduktion till CSSVT17 - DA355A - Introduktion till CSS
VT17 - DA355A - Introduktion till CSSAnton Tibblin
 

What's hot (20)

HT16 - DA156A - Användbarhet 2
HT16 - DA156A - Användbarhet 2HT16 - DA156A - Användbarhet 2
HT16 - DA156A - Användbarhet 2
 
HT16 - DA156A - Introduktion till CSS
HT16 - DA156A - Introduktion till CSSHT16 - DA156A - Introduktion till CSS
HT16 - DA156A - Introduktion till CSS
 
HT17 - DA156A - Introduktion till CSS
HT17 - DA156A - Introduktion till CSSHT17 - DA156A - Introduktion till CSS
HT17 - DA156A - Introduktion till CSS
 
Webbapplikationer - HTML
Webbapplikationer - HTMLWebbapplikationer - HTML
Webbapplikationer - HTML
 
VT17 - DA355A - Introduktion HTML
VT17 - DA355A - Introduktion HTMLVT17 - DA355A - Introduktion HTML
VT17 - DA355A - Introduktion HTML
 
VT17 - DA355A - Intro JS
VT17 - DA355A - Intro JSVT17 - DA355A - Intro JS
VT17 - DA355A - Intro JS
 
JavaScript - Intro
JavaScript - IntroJavaScript - Intro
JavaScript - Intro
 
HT17 - DA156A - Sammanfattning av kursen
HT17 - DA156A - Sammanfattning av kursenHT17 - DA156A - Sammanfattning av kursen
HT17 - DA156A - Sammanfattning av kursen
 
HT18 - DA156A - Introduktion till HTML
HT18 - DA156A - Introduktion till HTMLHT18 - DA156A - Introduktion till HTML
HT18 - DA156A - Introduktion till HTML
 
HT19 - DA156A - Introduktion till HTML
HT19 - DA156A - Introduktion till HTMLHT19 - DA156A - Introduktion till HTML
HT19 - DA156A - Introduktion till HTML
 
Webbapplikationer - Kursintroduktion (anton.tibblin@mah.se)
Webbapplikationer - Kursintroduktion (anton.tibblin@mah.se)Webbapplikationer - Kursintroduktion (anton.tibblin@mah.se)
Webbapplikationer - Kursintroduktion (anton.tibblin@mah.se)
 
HT17 - DA156A - Ramverk och bibliotek
HT17 - DA156A - Ramverk och bibliotekHT17 - DA156A - Ramverk och bibliotek
HT17 - DA156A - Ramverk och bibliotek
 
HT17 - DA156A - Layout med HTML & CSS
HT17 - DA156A - Layout med HTML & CSSHT17 - DA156A - Layout med HTML & CSS
HT17 - DA156A - Layout med HTML & CSS
 
HT17 - DA156A - CSS, Layout 2
HT17 - DA156A - CSS, Layout 2HT17 - DA156A - CSS, Layout 2
HT17 - DA156A - CSS, Layout 2
 
jQuery & HTML5 Cache
jQuery & HTML5 CachejQuery & HTML5 Cache
jQuery & HTML5 Cache
 
VT18 - DA355A - Introduktion till JavaScript
VT18 - DA355A - Introduktion till JavaScriptVT18 - DA355A - Introduktion till JavaScript
VT18 - DA355A - Introduktion till JavaScript
 
Föreläsning 1: Grundläggande HTML
Föreläsning 1: Grundläggande HTMLFöreläsning 1: Grundläggande HTML
Föreläsning 1: Grundläggande HTML
 
HT17 - DA156A - Kursintroduktion
HT17 - DA156A - KursintroduktionHT17 - DA156A - Kursintroduktion
HT17 - DA156A - Kursintroduktion
 
HT17 - DA156A - JavaScript i webbutveckling
HT17 - DA156A - JavaScript i webbutvecklingHT17 - DA156A - JavaScript i webbutveckling
HT17 - DA156A - JavaScript i webbutveckling
 
VT17 - DA355A - Introduktion till CSS
VT17 - DA355A - Introduktion till CSSVT17 - DA355A - Introduktion till CSS
VT17 - DA355A - Introduktion till CSS
 

Similar to HT16 - DA156A - JavaScript 3

DA395A - VT24 - JavaScript & Document object model
DA395A - VT24 - JavaScript & Document object modelDA395A - VT24 - JavaScript & Document object model
DA395A - VT24 - JavaScript & Document object modelAnton Tibblin
 
HT22 - DA354A - Funktioner
HT22 - DA354A - FunktionerHT22 - DA354A - Funktioner
HT22 - DA354A - FunktionerAnton Tibblin
 
HT19 - DA354A - Funktioner
HT19 - DA354A - FunktionerHT19 - DA354A - Funktioner
HT19 - DA354A - FunktionerAnton Tibblin
 
HT16 - DA354A - Funktioner
HT16 - DA354A - FunktionerHT16 - DA354A - Funktioner
HT16 - DA354A - FunktionerAnton Tibblin
 
HT18 - DA354A - Functions
HT18 - DA354A - FunctionsHT18 - DA354A - Functions
HT18 - DA354A - FunctionsAnton Tibblin
 
VT24 - jQuery & Ajax - Flerplattformsapplikationer med webbtekniker
VT24 - jQuery & Ajax - Flerplattformsapplikationer med webbteknikerVT24 - jQuery & Ajax - Flerplattformsapplikationer med webbtekniker
VT24 - jQuery & Ajax - Flerplattformsapplikationer med webbteknikerAnton Tibblin
 
HT15, DA354A - Funkioner
HT15, DA354A - FunkionerHT15, DA354A - Funkioner
HT15, DA354A - FunkionerAnton Tibblin
 
VT2019 - DA355A - jQuery och Ajax
VT2019 - DA355A - jQuery och AjaxVT2019 - DA355A - jQuery och Ajax
VT2019 - DA355A - jQuery och AjaxAnton Tibblin
 
Webbens Arkitektur
Webbens ArkitekturWebbens Arkitektur
Webbens Arkitekturniklal
 
HT18 - DA156A - Extra
HT18 - DA156A - ExtraHT18 - DA156A - Extra
HT18 - DA156A - ExtraAnton Tibblin
 
Xpages för utvecklare
Xpages för utvecklareXpages för utvecklare
Xpages för utvecklareThomas Adrian
 
VT2018 - DA355A - Ajax
VT2018 - DA355A - AjaxVT2018 - DA355A - Ajax
VT2018 - DA355A - AjaxAnton Tibblin
 
Introduktion till UML, OOAD & OOP, del 2
Introduktion till UML, OOAD & OOP, del 2Introduktion till UML, OOAD & OOP, del 2
Introduktion till UML, OOAD & OOP, del 2Johan Holmberg
 
VT2018 - DA355A - Geolocation, Media, Package Manage
VT2018 - DA355A - Geolocation, Media, Package ManageVT2018 - DA355A - Geolocation, Media, Package Manage
VT2018 - DA355A - Geolocation, Media, Package ManageAnton Tibblin
 
HT23 - DA106A - Introduktion till JavaScript
HT23 - DA106A - Introduktion till JavaScriptHT23 - DA106A - Introduktion till JavaScript
HT23 - DA106A - Introduktion till JavaScriptAnton Tibblin
 

Similar to HT16 - DA156A - JavaScript 3 (20)

DA395A - VT24 - JavaScript & Document object model
DA395A - VT24 - JavaScript & Document object modelDA395A - VT24 - JavaScript & Document object model
DA395A - VT24 - JavaScript & Document object model
 
JavaScript & DOM
JavaScript & DOMJavaScript & DOM
JavaScript & DOM
 
HT22 - DA354A - Funktioner
HT22 - DA354A - FunktionerHT22 - DA354A - Funktioner
HT22 - DA354A - Funktioner
 
HT19 - DA354A - Funktioner
HT19 - DA354A - FunktionerHT19 - DA354A - Funktioner
HT19 - DA354A - Funktioner
 
HT16 - DA354A - Funktioner
HT16 - DA354A - FunktionerHT16 - DA354A - Funktioner
HT16 - DA354A - Funktioner
 
HT18 - DA354A - Functions
HT18 - DA354A - FunctionsHT18 - DA354A - Functions
HT18 - DA354A - Functions
 
VT24 - jQuery & Ajax - Flerplattformsapplikationer med webbtekniker
VT24 - jQuery & Ajax - Flerplattformsapplikationer med webbteknikerVT24 - jQuery & Ajax - Flerplattformsapplikationer med webbtekniker
VT24 - jQuery & Ajax - Flerplattformsapplikationer med webbtekniker
 
HT15, DA354A - Funkioner
HT15, DA354A - FunkionerHT15, DA354A - Funkioner
HT15, DA354A - Funkioner
 
VT2019 - DA355A - jQuery och Ajax
VT2019 - DA355A - jQuery och AjaxVT2019 - DA355A - jQuery och Ajax
VT2019 - DA355A - jQuery och Ajax
 
JavaScript och DOM
JavaScript och DOMJavaScript och DOM
JavaScript och DOM
 
jQuery & Ajax
jQuery & AjaxjQuery & Ajax
jQuery & Ajax
 
jQuery and Ajax
jQuery and AjaxjQuery and Ajax
jQuery and Ajax
 
Webbens Arkitektur
Webbens ArkitekturWebbens Arkitektur
Webbens Arkitektur
 
HT18 - DA156A - Extra
HT18 - DA156A - ExtraHT18 - DA156A - Extra
HT18 - DA156A - Extra
 
Xpages för utvecklare
Xpages för utvecklareXpages för utvecklare
Xpages för utvecklare
 
VT2018 - DA355A - Ajax
VT2018 - DA355A - AjaxVT2018 - DA355A - Ajax
VT2018 - DA355A - Ajax
 
Introduktion till UML, OOAD & OOP, del 2
Introduktion till UML, OOAD & OOP, del 2Introduktion till UML, OOAD & OOP, del 2
Introduktion till UML, OOAD & OOP, del 2
 
VT2018 - DA355A - Geolocation, Media, Package Manage
VT2018 - DA355A - Geolocation, Media, Package ManageVT2018 - DA355A - Geolocation, Media, Package Manage
VT2018 - DA355A - Geolocation, Media, Package Manage
 
JavaScript + DOM
JavaScript + DOMJavaScript + DOM
JavaScript + DOM
 
HT23 - DA106A - Introduktion till JavaScript
HT23 - DA106A - Introduktion till JavaScriptHT23 - DA106A - Introduktion till JavaScript
HT23 - DA106A - Introduktion till JavaScript
 

More from Anton Tibblin

2024 - Localstorage & cookies Geolocation Mediahantering.pdf
2024 - Localstorage & cookies Geolocation Mediahantering.pdf2024 - Localstorage & cookies Geolocation Mediahantering.pdf
2024 - Localstorage & cookies Geolocation Mediahantering.pdfAnton Tibblin
 
VT24 - Responsiv design & Ramverk inom webbutveckling
VT24 - Responsiv design & Ramverk inom webbutvecklingVT24 - Responsiv design & Ramverk inom webbutveckling
VT24 - Responsiv design & Ramverk inom webbutvecklingAnton Tibblin
 
VT24 - DA395A - Kursintroduktion: Flerplattformsapplikationer med webbtekniker
VT24 - DA395A - Kursintroduktion: Flerplattformsapplikationer med webbteknikerVT24 - DA395A - Kursintroduktion: Flerplattformsapplikationer med webbtekniker
VT24 - DA395A - Kursintroduktion: Flerplattformsapplikationer med webbteknikerAnton Tibblin
 
HT23 - DA354A - Webbprogrammering med Python
HT23 - DA354A - Webbprogrammering med PythonHT23 - DA354A - Webbprogrammering med Python
HT23 - DA354A - Webbprogrammering med PythonAnton Tibblin
 
HT23 - DA354A - Fil- och felhantering
HT23 - DA354A - Fil- och felhanteringHT23 - DA354A - Fil- och felhantering
HT23 - DA354A - Fil- och felhanteringAnton Tibblin
 
HT23 - DA354A - Listor och lexikon
HT23 - DA354A - Listor och lexikonHT23 - DA354A - Listor och lexikon
HT23 - DA354A - Listor och lexikonAnton Tibblin
 
HT23 - DA354A - Kursintroduktion
HT23 - DA354A - KursintroduktionHT23 - DA354A - Kursintroduktion
HT23 - DA354A - KursintroduktionAnton Tibblin
 
HT23 - DA106A - Användbarhet (2)
HT23 - DA106A - Användbarhet (2)HT23 - DA106A - Användbarhet (2)
HT23 - DA106A - Användbarhet (2)Anton Tibblin
 
HT23 - DA106A - Användbarhet 1
HT23 - DA106A - Användbarhet 1HT23 - DA106A - Användbarhet 1
HT23 - DA106A - Användbarhet 1Anton Tibblin
 
HT23 - DA106A - Ramverk & Bibliotek
HT23 - DA106A - Ramverk & BibliotekHT23 - DA106A - Ramverk & Bibliotek
HT23 - DA106A - Ramverk & BibliotekAnton Tibblin
 
HT23 - DA106A - Responsiv webbutveckling
HT23 - DA106A - Responsiv webbutvecklingHT23 - DA106A - Responsiv webbutveckling
HT23 - DA106A - Responsiv webbutvecklingAnton Tibblin
 
HT23 - DA106A - Layout (2)
HT23 - DA106A - Layout (2)HT23 - DA106A - Layout (2)
HT23 - DA106A - Layout (2)Anton Tibblin
 
HT23 - DA106A - Layout med CSS (1)
HT23 - DA106A - Layout med CSS (1)HT23 - DA106A - Layout med CSS (1)
HT23 - DA106A - Layout med CSS (1)Anton Tibblin
 
Introduktion till CSS
Introduktion till CSSIntroduktion till CSS
Introduktion till CSSAnton Tibblin
 
HTML - Tabeller och formulär
HTML - Tabeller och formulärHTML - Tabeller och formulär
HTML - Tabeller och formulärAnton Tibblin
 
Introduktion till HTML
Introduktion till HTMLIntroduktion till HTML
Introduktion till HTMLAnton Tibblin
 
LocalStorage - GeoLocation - Media
LocalStorage - GeoLocation - MediaLocalStorage - GeoLocation - Media
LocalStorage - GeoLocation - MediaAnton Tibblin
 
VT23 - RWD & Ramverk
VT23 - RWD & RamverkVT23 - RWD & Ramverk
VT23 - RWD & RamverkAnton Tibblin
 
VT23 - DA395A - Kursintroduktion
VT23 - DA395A - KursintroduktionVT23 - DA395A - Kursintroduktion
VT23 - DA395A - KursintroduktionAnton Tibblin
 

More from Anton Tibblin (20)

2024 - Localstorage & cookies Geolocation Mediahantering.pdf
2024 - Localstorage & cookies Geolocation Mediahantering.pdf2024 - Localstorage & cookies Geolocation Mediahantering.pdf
2024 - Localstorage & cookies Geolocation Mediahantering.pdf
 
VT24 - Responsiv design & Ramverk inom webbutveckling
VT24 - Responsiv design & Ramverk inom webbutvecklingVT24 - Responsiv design & Ramverk inom webbutveckling
VT24 - Responsiv design & Ramverk inom webbutveckling
 
VT24 - DA395A - Kursintroduktion: Flerplattformsapplikationer med webbtekniker
VT24 - DA395A - Kursintroduktion: Flerplattformsapplikationer med webbteknikerVT24 - DA395A - Kursintroduktion: Flerplattformsapplikationer med webbtekniker
VT24 - DA395A - Kursintroduktion: Flerplattformsapplikationer med webbtekniker
 
HT23 - DA354A - Webbprogrammering med Python
HT23 - DA354A - Webbprogrammering med PythonHT23 - DA354A - Webbprogrammering med Python
HT23 - DA354A - Webbprogrammering med Python
 
HT23 - DA354A - Fil- och felhantering
HT23 - DA354A - Fil- och felhanteringHT23 - DA354A - Fil- och felhantering
HT23 - DA354A - Fil- och felhantering
 
HT23 - DA354A - Listor och lexikon
HT23 - DA354A - Listor och lexikonHT23 - DA354A - Listor och lexikon
HT23 - DA354A - Listor och lexikon
 
HT23 - DA354A - Kursintroduktion
HT23 - DA354A - KursintroduktionHT23 - DA354A - Kursintroduktion
HT23 - DA354A - Kursintroduktion
 
HT23 - DA106A - Användbarhet (2)
HT23 - DA106A - Användbarhet (2)HT23 - DA106A - Användbarhet (2)
HT23 - DA106A - Användbarhet (2)
 
HT23 - DA106A - Användbarhet 1
HT23 - DA106A - Användbarhet 1HT23 - DA106A - Användbarhet 1
HT23 - DA106A - Användbarhet 1
 
HT23 - DA106A - Ramverk & Bibliotek
HT23 - DA106A - Ramverk & BibliotekHT23 - DA106A - Ramverk & Bibliotek
HT23 - DA106A - Ramverk & Bibliotek
 
HT23 - DA106A - Responsiv webbutveckling
HT23 - DA106A - Responsiv webbutvecklingHT23 - DA106A - Responsiv webbutveckling
HT23 - DA106A - Responsiv webbutveckling
 
HT23 - DA106A - Layout (2)
HT23 - DA106A - Layout (2)HT23 - DA106A - Layout (2)
HT23 - DA106A - Layout (2)
 
HT23 - DA106A - Layout med CSS (1)
HT23 - DA106A - Layout med CSS (1)HT23 - DA106A - Layout med CSS (1)
HT23 - DA106A - Layout med CSS (1)
 
Introduktion till CSS
Introduktion till CSSIntroduktion till CSS
Introduktion till CSS
 
HTML - Tabeller och formulär
HTML - Tabeller och formulärHTML - Tabeller och formulär
HTML - Tabeller och formulär
 
Introduktion till HTML
Introduktion till HTMLIntroduktion till HTML
Introduktion till HTML
 
Kursintroduktion
KursintroduktionKursintroduktion
Kursintroduktion
 
LocalStorage - GeoLocation - Media
LocalStorage - GeoLocation - MediaLocalStorage - GeoLocation - Media
LocalStorage - GeoLocation - Media
 
VT23 - RWD & Ramverk
VT23 - RWD & RamverkVT23 - RWD & Ramverk
VT23 - RWD & Ramverk
 
VT23 - DA395A - Kursintroduktion
VT23 - DA395A - KursintroduktionVT23 - DA395A - Kursintroduktion
VT23 - DA395A - Kursintroduktion
 

HT16 - DA156A - JavaScript 3

  • 2. Dagens föreläsning 1. Repetition 2. Mer DOM 3. Ex. Valutakonverterare 4. Tillgänglighet 5. this i JavaScript 6. Fler exempel
  • 3. Vi har numera koll på… • Variabler • Datatyper • Loopar • If-satser • Funktioner
  • 7. Från funktioner till interaktiva webbsidor
  • 8. Strukturera program med funktioner • En funktion är en namngiven samling instruktioner • Ofta är det lättare att tänka vad som ska utföras • Funktioner låter oss separera ”vad” från ”hur” • Definiera uppgiften, lista ut vilka indata som krävs, bestämma vad resultatet ska vara.
  • 9. Anropa en funktion vid musklick • För varje element på en webbsida så kan man ange JavaScript som ska köras vid ett musklick • Typiskt anges en funktion som ska anropas
  • 10. Händelsedriven programmering • Detta är en form av händelsedriven programmering (event handling) • Webbläsaren ”lyssnar” efter händelser (musklick) och reagerar genom att anropa den funktion vi angivit
  • 11. Att separera JavaScript från HTML Problem: Att hitta rätta element i HTML-dokumentet, genom JavaScript
  • 12. Att hitta ett HTML-element genom JavaScript
  • 13. Att hitta flera HTML-element genom JavaScript
  • 14. Att manipulera element genom JavaScript • När vi i JavaScript letat upp ett element kan vi modifiera det • Ta bort det • Ändra ev. innehåll (text) • Ändra CSS-egenskaper • Ändra/lägga till/ta bort attribut
  • 16. Hmm… Men onclick är ju ett attribut!?
  • 17. Att koppla händelser till HTML-element (1)
  • 18. Att koppla händelser till HTML-element (2)
  • 19. När blir (2) smidigare än (1)?
  • 21. Att tänka på: Datorn läser koden i den ordning som den står i. Detta innebär att när vår JavaScript-fil läses in, så har datorn inte läst in hela HTML-dokumentet och vet inte vilka element som finns…
  • 22. Möjligheterna är oändliga med DOM Några saker kan vara speciellt bra att ha sett: • Ersätta innehåll i element • Läsa och skriva till formulärselement • Ändra CSS dynamiskt
  • 24. Tillgänglighet Vad händer om man har inaktiverat JavaScript i webbläsaren?
  • 25. Inaktiverat JavaScript? • Man kan inaktivera det manuellt • På vissa företag inaktiveras det • Gamla webbläsare stödjer ev. inte JavaScript fullt ut
  • 26. Hur löser vi det? Providing an alternative version of your functionality or making the user aware of shortcomings of a product as a safety measure to ensure that the product is usable. - Chrisitan Heilmann
  • 27. Med andra ord… 1. Bygg webbplatser för moderna webbläsare 2. Identifiera kritisk funktionalitet och 1. Se till att detta fungerar i alternativa webbläsare 2. Berätta för användaren att något är fel och föreslå en metod för att fixa detta
  • 29. Hur löser vi det? <a href="javascript:window.print()">Print page</a> <noscript> <p class="scriptwarning"> Printing the page requires JavaScript. Please turn it on in your browser. </p> </noscript>
  • 30. Är det den smidigaste lösningen? • Vad är JavaScript? • Hur aktiverar jag det? • Får inte använda JavaScript (företagsmiljö), • kan inte använda JavaScript • Aktivera JavaScript bara för att skriva ut?
  • 31. Tänk på användaren <a href="javascript:window.print()">Print page</a> <noscript> <p class="scriptwarning"> Print a copy of your confirmation. Select the "Print" icon in your browser, or select "Print" from the "File" menu. </p> </noscript>
  • 33. Ett av de mest användbara koncepten i JavaScript är this. this refererar till det element som utlöser en händelse.
  • 34. this • this i JavaScript är ett nyckelord. JavaScript HTML
  • 35. Ex. this Vi testar med en paragraf.
  • 36. Varför är this så bra? • Vid mängder av element! När vi vill säga att: • På det element som användaren klickade på vill vi…
  • 38. Att loopa igenom alla element • Hämta en mängd med element (en lista med element): • document.querySelectorAll • ”Loopa” igenom alla element som returneras, ex.
  • 41. Vad behöver vi veta? 1. Vi behöver identifiera: 1. Textfältet som vi skriver in vår ”att göra” 2. Knappen ”lägg till” 3. Listan där vi ska lägga till vår ”att göra” 4. Knappen ”rensa lista” 2. Vi behöver veta hur man: 1. Skapar ett element i JavaScript 2. Hur man tar bort element i JavaScript
  • 42. Att skapa ett element i JavaScript 1. Ett element består av följande: 1. Ett element (t.ex. <li></li>) 2. Ev. attribut (t.ex <li class=”a”></li>) 3. Ev. textnod (t.ex. <li>lite text</li>) 2. För att skapa ett <li>-element skriver man: var el = document.createElement(”li”); 3. För att skapa en textnod skriver man: var text = document.createTextNode(”text”); 4. För att lägga in textnoden i elementet: el.appendChild(text);
  • 43. Att lägga till ett element på sidan 1. Vi behöver först ha skapat ett element var el = document.createElement(”li”); var text = document.createTextNode(”Hej”); el.appendChild(text); ”el” innehåller nu ”<li>Hej</li>” 2. Leta upp det element vi vill lägga till ”<li>Hej</li>” i: var target = document.getElementById(id); target.appendChild(el);
  • 44. Ta bort element • Använder funktionen ”removeChild(child)” T.ex. <ul id=”list”> <li>Hej</li> </ul> var list = document.getElementById(”list”); List.removeChild(list.firstChild);