Syster Webb - PC Hemma 6/2004

JavaScript på en rad

De JavaScript jag använder fungerar inte, trots att koden är rätt avskriven. Vad gör jag för fel?

Svar: Jag har tittat på din kod och sett att du har dragit ihop i stort sett all kod till en enda rad. Det fungerar ofta, men inte när du använder kommenterade JavaScript. Som exempel kan vi ta ett skript som visar när sidan uppdaterades senast:

<SCRIPT LANGUAGE="JavaScript">
<!--
document.write("Senaste uppdatering " + document.lastModified);
//-->
</SCRIPT>

När skriptet skrivs ihop på en enda rad kommer raden att börja med:

<SCRIPT LANGUAGE="JavaScript"><!--document.write

Webbläsaren kommer då att tolka allt som står i raden efter <!-- som en kommentar och hoppa över hela raden. För att få dina skript att fungera måste du antingen dela upp skripten på flera rader igen, eller ta bort kommentarskoderna <!-- och //-->.

Avrunda tal

Jag har ett formulär där besökaren skall skriva in ett tal, till exempel 3,66666, och sedan klicka på en knapp för att talet skall visas avrundat i nästa textrad. Hur gör jag för att avrunda? Och hur avrundar jag med till exempel två decimaler?

Svar: För det första måste du på något sätt visa besökarna att decimalkommat skall anges med en punkt för att allt skall fungera, alltså som 3.66666.

Lägg följande skript mellan HEAD-taggarna:

<SCRIPT LANGUAGE="JavaScript">
function avkorta() {
var tal = (document.forms[0].a.value);
tal = Math.round(tal);
document.forms[0].b.value = tal;
}
</SCRIPT>

Det är raden tal = Math.round(tal); som avrundar talet till närmaste heltal, och det är i den du skall ändra om du vill visa decimaler.

JavaScript har ingen funktion för att direkt visa ett bestämt antal decimaler. I stället får du göra en liten beräkning.

Låt oss säga att du vill ha två decimaler. Om talet från början är 36.66666, multiplicerar du detta med 100. Du får 3666.666, som du kortar av till närmaste heltal. Resultatet blir 3667. Detta dividerar du med 100 och resultatet blir 36.67. Du har fått dina båda decimaler.

I skriptet kommer det att se ut så här:

tal = Math.round(tal*100)/100;

Om du vill ha tre decimaler multiplicerar du med 1000 i stället – lika många nollor som decimaler.

Mellan BODY-taggarna placerar du sedan formuläret med textraderna och avkortningsknappen:

<FORM>
<INPUT TYPE="text" NAME="a" SIZE="35" VALUE="Skriv talet med punkt som decimalkomma" onFocus="value=''"><BR>
<INPUT TYPE="text" NAME="b" SIZE="35" VALUE="Här visas det avkortade resultatet"><BR>
<INPUT TYPE="button" VALUE="Avkorta" onClick="avkorta()">
</FORM>

  

När besökaren klickar i den första textraden för att skriva in sitt tal, försvinner texten ur textraden. När besökaren klickar på knappen byts texten i den andra raden mot det avkortade talet.

Rena grekiskan

Jag använder ofta matematiska symboler på mina sidor, men det är minst sagt knepigt att få till dem rätt. Hur skriver man till exempel det grekiska tecknet ny i HTML-kod?

Svar: Just ny anger du med &#957; (för lilla ny) eller &#925; (för stora ny). Ofta måste du byta teckensnitt för att symbolerna skall visas snyggt. Pröva med Georgia eller Times New Roman.

Men jag gissar att du skulle behöva tillgång till fler symboler. Här finns en komplett förteckning över de symboler som kan kodas med HTML.

Omröstning och inloggning

1. Vad är koden för att kunna ha en webbundersökning, som till exempel:

  • Vilken är din favoritmat?
    1. Köttbullar
    2. Ris
    3. Potatis

Och sedan kan man klicka på någon av dem och rösta.

2. Vad är koden för att kunna ha en hemsida där man kan logga in och ut och så där?

Svar 1: Det här kräver att du använder skript som sparar i till exempel en databas på servern. Betydligt enklare är att använda någon av de tjänster som redan finns. Gå in på Alxnet. Där kan du skaffa en omröstningsfunktion gratis och den är dessutom på svenska.

Svar 2: Gå till JavaScript-skolan, där du i Grundkursen väljer "Lösenord". Där kan du läsa om hur du gör för att göra sidorna lösenordsskyddade. Tänk dock på att JavaScript aldrig räcker för att helt skydda en sida!