webForumDet fria alternativet

Vad krävs för att ett enkelt javascript ska funka?

12 svar · 646 visningar · startad av aasah

aasahMedlem sedan mars 20034 471 inlägg
#1

Vad jag eg. vill är att skapa en form (radio-modell) och få javascriptet att ta hand om resultatet av den formen.

Hur gör man? Kan inte alla servrar köra javascript? Kan Telias hemsidesserver, w1.871.telia.com göra det?

Är frågan för allmänt ställd?

dhoMedlem sedan aug. 20022 027 inlägg
#2

Javascript körs i klienten, dvs i respektive användares webbläsare. För att ta hand om resultatet av ett formulär på serversidan så behöver du någon form av scriptspråk som körs på webbservern som t.ex. PHP eller Perl.

Om du förklarar lite mer vad du är ute efter så blir det enklare att hjälpa till. :)

aasahMedlem sedan mars 20034 471 inlägg
#3

OK, jag håller på att ta de första stapplande stegen för att begripa hur "internetprogrammering" funkar.

Det jag eg. vill är att lägga ut några frågesporter på min hemsida, eftersom jag tycker sånt är kul. Resultatet behöver inte lagras nånstans, men jag skulle vilja kunna behandla det och presentera det "här och nu". Så småningom vill jag kunna ge olika poäng beroende på fråga. Men, för ögonblicket, skulle jag bli lycklig om jag kunde få till något i stil med:

Vilken bottenfärg har Norges flagga?
O Vit
O Röd
O Blå
Testa //en knapp

Rätt svar var Röd, du valde ............, poäng ......

där ..... beror på svaret.

Var det bättre?

Jag har lagt allt i en fil, flagg.htm . Formen först, sedan knappen som anropar
eval() som är definierad i javascript omedelbart nedanför. Ska det inte se ut så? Eller är det .htm som är fel? Borde den heta något annat? När filen visas i webbläsaren visas själva texten, med taggar och allt... Jag fattar ingenting... :x

Jesper TMedlem sedan nov. 20017 144 inlägg
#4

Posta kod så är det lättare att se felet kanske. :)

aasahMedlem sedan mars 20034 471 inlägg
#5

OK, ...

[i]Flagg.htm[/i]
<HTML>
<HEAD>
<TITLE>Test </TITLE>
</HEAD>
<BODY>
<center>
<h2><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Test</font></h2>
<font size="2" face="Verdana, Arial, Helvetica, sans-serif">Flaggkunskap</font> 
</center>
<p> 
<hr>
<p align="left"> 
<form name="Flagg">
<p align="left"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"> 
Vilken bottenfärg har Norges flagga?<BR>
<INPUT type="radio" name="q1" value="V">Vit.<BR>
<INPUT type="radio" name="q1" value="R">Ro&umld;.<BR>
<INPUT type="radio" name="q1" value="B">Bla&ring;.<BR>
</font></P>
<p align="center"><br>
<input type="button" value="Kolla!" onClick="eval();" name="button">
<br>
<input type="text" name="mess" value="" size="35">
<br>
</p>
</form>
<script language="JavaScript">
document.Flagg.mess.value="";
function eval() {
   var T=0;
   if (document.Flagg.q1.R.checked==true) {
       T=1; 
       document.Flagg.mess.value="Ra&uml;tt svar var Ro&uml;d, du valde RÄTT,  poäng "+T;
   }
   if (document.Flagg.q1.V.checked==true) {
      T=0; 
      document.Flagg.mess.value="Ra&uml;tt svar var Ro&uml;d, du valde VIT,  poäng "+T;
   }
   if (document.Flagg.q1.B.checked==true) {
      T=0; 
      document.Flagg.mess.value="Ra&uml;tt svar var Ro&uml;d, du valde BLÅ,  poäng "+T;
   }
}
</script>
</BODY>
</HTML>
dhoMedlem sedan aug. 20022 027 inlägg
#6

När du använder grupperade radioknappar, som du gjort i din kod, så läggs de i en vektor, dvs ql[0] för första radioknappen, gl[1] för den andra osv. Ändrade det i koden så nu fungerar det.

<HTML>
<HEAD>
<TITLE>Test </TITLE>
</HEAD>
<BODY>
<center>
<h2><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Test</font></h2>
<font size="2" face="Verdana, Arial, Helvetica, sans-serif">Flaggkunskap</font> 
</center>
<p> 
<hr>
<p align="left"> 
<form name="Flagg">
<p align="left"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"> 
Vilken bottenfärg har Norges flagga?<BR>
<INPUT type="radio" name="q1" value="V">Vit.<BR>
<INPUT type="radio" name="q1" value="R">Ro¨d;.<BR>
<INPUT type="radio" name="q1" value="B">Bla&ring;.<BR>
</font></P>
<p align="center"><br>
<input type="button" value="Kolla!" onClick="eval();" name="button">
<br>
<input type="text" name="mess" value="" size="35">
<br>
</p>
</form>
<script language="JavaScript">
document.Flagg.mess.value="";
function eval() {
   var T=0;
   if (document.Flagg.q1[0].checked) {
       T=1; 
       document.Flagg.mess.value="Ra¨tt svar var Ro¨d, du valde RÄTT,  poäng "+T;
   }
   if (document.Flagg.q1[1].checked) {
      T=0; 
      document.Flagg.mess.value="Ra¨tt svar var Ro¨d, du valde VIT,  poäng "+T;
   }
   if (document.Flagg.q1[2].checked) {
      T=0; 
      document.Flagg.mess.value="Ra¨tt svar var Ro¨d, du valde BLÅ,  poäng "+T;
   }
}
</script>
</BODY>
</HTML>
Jesper TMedlem sedan nov. 20017 144 inlägg
#7

Ja, då får du dessutom växla plats på lite kod.
Det är kanske kul om svaret kommer upp i en alert.

...
alert("Rätt svar var Röd, du valde RÄTT,  poäng "+T);
...
<HTML>
<HEAD>
<TITLE>Test </TITLE>
</HEAD>
<BODY>
<center>
<h2><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Test</font></h2>
<font size="2" face="Verdana, Arial, Helvetica, sans-serif">Flaggkunskap</font> 
</center>
<p> 
<hr>
<p align="left"> 
<form name="Flagg">
  <p align="left"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"> 
    Vilken bottenf&auml;rg har Norges flagga?<BR>
<INPUT type="radio" name="q1" value="V">Vit.<BR>
<INPUT type="radio" name="q1" value="R">Röd.<BR>
<INPUT type="radio" name="q1" value="B">Bl&aring;.<BR>
</font></P>
<p align="center"><br>
<input type="button" value="Kolla!" onClick="eval();" name="button">
<br>
<input type="text" name="mess" value="" size="35">
<br>
</p>
</form>
<script language="JavaScript">
document.Flagg.mess.value="";
function eval() {
   var T=0;
   if (document.Flagg.q1[0].checked) {
       T=0; 
      document.Flagg.mess.value="Rätt svar var Röd, du valde VIT,  poäng "+T;
   }
   if (document.Flagg.q1[1].checked) {
      T=1; 
       document.Flagg.mess.value="Rätt svar var Röd, du valde RÄTT,  poäng "+T;
   }
   if (document.Flagg.q1[2].checked) {
      T=0; 
      document.Flagg.mess.value="Rätt svar var Röd, du valde BLÅ,  poäng "+T;
   }
}
</script>
</BODY>
</HTML>
aasahMedlem sedan mars 20034 471 inlägg
#8

Tusen tack! :D

Tänk att något så litet kan ställa till så mycket... :OO

Om man vill ha en alert, var i koden ska den raden in? Dessutom, om alternativen avgörs av indexplacering, vad ska man med fältet value till då? Har man någonson nytta av det, eller kan det lika bra tas bort?

Om jag nu vill att man inte ska kunna trycka på knappen förrän användare valt något alternativ, hur gör man? Eftersom det är en frågesport (blivande) så vill jag helst inte ha ett defaultsvar. Är det möjligt att lösa?

Jesper TMedlem sedan nov. 20017 144 inlägg
#9

Byt ut detta:

 document.Flagg.mess.value="Rätt svar var Röd, du valde RÄTT,  poäng "+T;

Till detta:

alert("Rätt svar var Röd, du valde RÄTT,  poäng "+T);

Vad menar du med "valuefält"?
Vad menar du med "trycka på knappen"? Det händer ju inget om du inte valt något och om du trycker på knappen i nuläget.

bossseMedlem sedan juni 2003772 inlägg
#10

Du kan ju kolla hur jag gjort en tipstävling till ett speciellt evenemang med olika kommentarer för svaren i alertrutan beroende på antal rätt.

Detta ska köras lokalt på en dator, men kan även köras på webben om man inte har för många o för stora bilder.

Adressen nedan.

http://hem.passagen.se/bosson/fraga/

aasahMedlem sedan mars 20034 471 inlägg
#11

Tack för förklaringen! Och tack för erbjudandet, bossse! Jag kan säkert lära mig av att titta på den tjusiga saken. :) Dock vill jag gärna få mitt eget babyprogram att fungera som jag vill...

Jesper T skrev:

... Vad menar du med "valuefält"?
Vad menar du med "trycka på knappen"? Det händer ju inget om du inte valt något och om du trycker på knappen i nuläget.

"valuefält" = det som är rött i koden nedan.

"trycka på knappen" - Nej, men jag hade inte tänkt mig att bara ha EN fråga. I nuläget finns det två, men om jag bara svarar på den ena kommer resultatet upp där den andra räknas som felaktig. Men om jag nu vill att man inte ska kunna lämna frågor blanka, hur gör jag då?

Jag vill alltså inte att knappen märkt Kolla! ska fungera med mindre än att det finns svar på alla frågor.

<HTML>
<HEAD>
<TITLE>Test </TITLE>
</HEAD>
<BODY BGCOLOR="#cfffcf">
<center>
<h2><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Test</font></h2>
<font size="2" face="Verdana, Arial, Helvetica, sans-serif">Flaggkunskap</font> 
</center>
<p> 
<hr>
<p align="left"> 
<form name="Flagg">
<p align="left"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"> 
Vilken bottenfärg har Norges flagga?<BR>
<INPUT type="radio" name="q1" [red]value="V"[/red]>Vit.<BR>
<INPUT type="radio" name="q1" [red]value="R"[/red]>Röd.<BR>
<INPUT type="radio" name="q1" [red]value="B"[/red]>Blå.<BR>
</font></P>
<p align="left"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"> 
Hur ser Islands flagga ut?<BR>
<INPUT type="radio" name="q2" [red]value="V"[/red]>Vit botten med ett brett kors i blått och röda streck längs korset.<BR>
<INPUT type="radio" name="q2" [red]value="R"[/red]>Röd botten med ett brett kors i blått och vita streck längs korset.<BR>
<INPUT type="radio" name="q2" [red]value="B"[/red]>Blå botten med ett brett kors i rött och vita streck längs korset.<BR>
</font></P>
<p align="center"><br>
<input type="button" value="Kolla!" onClick="eval();" name="button">
<br>
<input type="text" name="mess" value="" size="50">
<br>
</p>
</form>
<script language="JavaScript">
document.Flagg.mess.value="";
function eval() {
var T=0;
if (document.Flagg.q1[0].checked==true) {
    T=0; 
}
if (document.Flagg.q1[1].checked==true) {
    T=1; 
}
if (document.Flagg.q1[2].checked==true) {
    T=0; 
}
if (document.Flagg.q2[0].checked==true) {
    T=T+0; 
}
if (document.Flagg.q2[1].checked==true) {
    T=T+0; 
}
if (document.Flagg.q2[2].checked==true) {
    T=T+1; 
}
document.Flagg.mess.value="Poängen blev "+ T;
}
</script>
</BODY>
</HTML>
dhoMedlem sedan aug. 20022 027 inlägg
#12

aasah skrev:

"trycka på knappen" - Nej, men jag hade inte tänkt mig att bara ha EN fråga. I nuläget finns det två, men om jag bara svarar på den ena kommer resultatet upp där den andra räknas som felaktig. Men om jag nu vill att man inte ska kunna lämna frågor blanka, hur gör jag då?

Jag vill alltså inte att knappen märkt Kolla! ska fungera med mindre än att det finns svar på alla frågor.

Du får i så fall göra en kontroll med t.ex. en for-loop där du kontrollerar att det finns ett svar på alla frågor. Jag tror inte att det går att avaktivera knappen om det inte finns svar till alla frågor men du skulle kunna visa en alert-box istället där det står något i stil med "Var vänlig svara på alla frågor innan du går vidare".

aasahMedlem sedan mars 20034 471 inlägg
#13

Försökte lägga in en koll av att båda frågor besvarats på följande sätt:

<HTML>
<HEAD>
<TITLE>Test </TITLE>
</HEAD>
<BODY BGCOLOR="#cfffcf">
<center>
<h2><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Test</font></h2>
<font size="2" face="Verdana, Arial, Helvetica, sans-serif">Flaggkunskap</font> 
</center>
<p> 
<hr>
<p align="left"> 
<form name="Flagg">
<p align="left"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"> 
Vilken bottenfärg har Norges flagga?<BR>
<INPUT type="radio" name="q1" value="V">Vit.<BR>
<INPUT type="radio" name="q1" value="R">Röd.<BR>
<INPUT type="radio" name="q1" value="B">Blå.<BR>
</font></P>
<p align="left"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"> 
Hur ser Islands flagga ut?<BR>
<INPUT type="radio" name="q2" value="V">Vit botten med ett brett kors i blått och röda streck längs korset.<BR>
<INPUT type="radio" name="q2" value="R">Röd botten med ett brett kors i blått och vita streck längs korset.<BR>
<INPUT type="radio" name="q2" value="B">Blå botten med ett brett kors i rött och vita streck längs korset.<BR>
</font></P>
<p align="center"><br>
<input type="button" value="Kolla!" onClick="eval();" name="button">
<br>
<input type="text" name="mess" value="" size="50">
<br>
</p>
</form>
<script language="JavaScript">
document.Flagg.mess.value="";
function eval() {
var T=0;
var forgot = new Array();
var ix = 0;
if (document.Flagg.q1[0].checked==true) {
    T=0; document.Flagg.mess.value="Rätt svar var Röd, du valde VIT,  poäng "+T;
}
else if (document.Flagg.q1[1].checked==true) {
    T=1; document.Flagg.mess.value="Rätt svar var Röd, du valde RÄTT,  poäng "+T;
}
else if (document.Flagg.q1[2].checked==true) {
    T=0; document.Flagg.mess.value="Rätt svar var Röd, du valde BLÅ,  poäng "+T;
}
else {
    forgot[ix]=1;
    ix++;
}
if (document.Flagg.q2[0].checked==true) {
    T=T+0; 
}
else if (document.Flagg.q2[1].checked==true) {
    T=T+0; 
}
else if (document.Flagg.q2[2].checked==true) {
    T=T+1; 
}
else {
    forgot[ix]=2;
    ix++;
}
if (ix > 0) {
    var str="Du glömde fylla i svar på fråga nr: ";
    for (i=0; i < ix - 1; i++)
	str = str + i + ", ";
    str = str + (ix - 1) + "!";
    alert(str);
}
else {
    document.Flagg.mess.value="Poängen blev "+ T;
}
</script>
</BODY>
</HTML>

Nu skrivs inget ut överhuvudtaget oavsett hur många frågor jag besvarar eller ej...! Vad är felet?

red: Sidan ser ligga snygg ut som innan, men nu får jag ingen reaktion överhuvudtaget när jag trycker Kolla! oavsett hur många frågor jag svarat på 0, 1 eller 2.

137 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)