Torgny > Meny Javascriptövn. > Javascriptövningar 8

Javascriptövningar 8

getElementById, innerHTML, CSS

1

Gör en kalkylator enligt figuren

Skärmdump av kalkylator

Tips:

Du kan komma åt inmatningsfälten på ett enkelt sätt om du ger dem id-attribut. Sätt t ex id="inTal1" på översta inmatningsfältet. Då kommer du åt innehållet med:

tal1 = document.getElementById("inTal1").value;

Skriv en funktion som tar hand om alla uträkningar, och kalla på den med varierande argument från de olika knapparna.

2

Gör en variant på kalkylatorn där resultatet skrivs ut som html-kod som på illustrationen nedan.

Skärmdump med kalkylator

Tips:

Lägg in entom div-tag där resultatet skall visas och sätt ett id-attribut på div-tagen. Du kan sedan komma åt div-tagens egenskaper med hjälp av get ElementById(). För att manipulera div-tagens innehåll kan du använda metoden innerHTML().

3

I exemplet nedan skall det vara möjligt att manipulera CSS-egenskaperna med hjälp av menyn Skin.

Exempel 5aExempel 5b

Css-klasserna för de två varianter som visas ovan ser ut så här:

.Lila {
   border:4px dashed #CC0099;
   color:#FF9900;
   padding:10px;
   width:200px;
   font-family:Geneva, Arial, Helvetica, sans-serif;
   font-size:18px;
   background-color:#FFCC00;
}
.Spring {
   border:4px dashed #00CC00;
   color:#996600;
   padding:10px;
   width:200px;
   font-family:Geneva, Arial, Helvetica, sans-serif;
   font-size:18px;
   background-color:#66FF00;
}

Koden för att byta CSS-klass på ett HTML- element ser ut så här om namnet exempelvis är minNyaClass:

[element].setAttribute("class", "minNyaClass");

Obs! Denna kod fungerar inte i alla versioner av Internet Explorer

4

Gör ett skript där CSS-bytet i förra övningen fungerar även i IE.

Skärmdump IE

Tips:

IE har ett annat namn på attributet för CSS-klassen. I IE ser koden för byta av klass ut så här:

[element].setAttribute("className", "minNyaClass");

Namnet på webbläsaren kommer du åt genom navigator-objektets egenskap appVersion. Med metoden indexOf() kan du kolla om bokstavskombinationen IE ingår i applikationsnamnet.

5

Skärmdump 1

När användaren fyllt i formuläret och klickat på Submitknappen skall en alertruta visas. I denna skall det visas felmeddelanden i följande två fall:

  1. Om inte mailadressen innehåller ett @-tecken
  2. Om inte postnumret är 5 tecken långt

Tips:

Om du sätter id för postnumrets inputfält till "inputPostnummer" kan du komma åt fältet genom att skriva:
   
     var postNr = document.getElementById("inputPostnummer");

Fältets innehåll ges sedan av postNr.value.
Om du inte vill att formuläret skall skickas iväg måste funktionen som du aktiverar med tryckning på submitknappen returnera värdet false. Händelsehanteraren onsubmit kan du lägga i form-tagen.
Använd strängfunktionerna indexOf och length för att kontrollera värdena.

6

Koppla en händelsehanterare till knappen dynamiskt med hjälp av Javascript. Vid klickning på knappen skall en funktion btClick aktivera en alertruta enligt illustrationen.

Webbläsare med klickbar knapp

Hjälp:

Enklaste sättet att skapa en händelsehanterare är att lägga den som ett attribut i html-koden. Det kan se ut så här:

<input type="button" onclick="doSomething();" />

Här skall du emellertid lägga till händelsehanterare dynamiskt med hjälp av Javascript. Metoden för detta heter addEventListener enligt standarden. Tyvärr serdock koden för detta olika ut i olika webbläsare. Funktionen addEvent nedan tar hänsyn till detta och kan användas för att skapa händelsehanterare i såväl Mozilla som IE:

      	function addEvent(elm, evtype, fn, useCapture) 
	{ 
		//Credit: function written by Scott Andrews (www.scottandrews.com)
		
		if (elm.addEventListener) 
			ret = elm.addEventListener(evtype, fn, useCapture); 
		else if (elm.attachEvent) 
			ret = elm.attachEvent('on' + evtype, fn); 
		else 
			elm['on' + evtype] = fn; 
		return ret; 
	}

Som synes tar funktionen tre argument:

Följande sats aktiverar funktionen minFunktion när sidan laddats in:

addEvent(window, 'load', minFunktion, false);

Observera att html-element inte finns innan sidan är innanladdad.

7

Gör en sida som tar emot text som du skriver på tangentbordet och visar den direkt på skärmen.

Text på skärmen

Tips:

function skriv(e){
   cCode= e.charCode;

String.fromCharCode(cCode)

8

Utveckla koden i föregående exempel så att den hanterar radmatningar och bakstegstangenten på rätt sätt. (Backstegtangenten skall radera senast inskrivna tecken.

Tips: