Gå til innhold

[Løst] Javascript vil ikke kjøre reset funksjon som ser helt feilfritt ut


Anbefalte innlegg

Hei.

 

På koden jeg fikk hjelp med i går så har jeg prøvd å legge på noen forbedringer, noe som ikke har gått feilfritt, men jeg har funnet problemene.

 

Men nå, når jeg prøvde å lage en reset-funksjon som skal resete den (jeg skal ha den som en web-app til ios-enheter, så det er greit å ha en reset-funksjon), så vil den ikke utføre det funksjonen skal utføre når jeg trykker på knappen "Start på nytt".

 

Takker på forhånd alle.

 

Her definerer jeg variablene som globale(ble først litt overrasket over at jeg måtte sette variablene til 0, trodde det var default, men):

var antallRiktig = 0;
var antallTesterTatt = 0;

 

Her er funksjonen svaret() og funksjonen reset():

function svaret()
{
var brukerSvar=document.forms['tallet']['svar'].value;
var resultat;
if (fraSprak == 0 && (brukerSvar == spanskTall || brukerSvar == SpanskTall)) {
 resultat="Helt riktig, " + norskTall + " er " + spanskTall + "!";
 antallRiktig += 1;
}
else if (fraSprak == 0 && (brukerSvar != spanskTall || brukerSvar != SpanskTall)) {
 resultat="Feil, " + norskTall + " er " + spanskTall + "!";
}
else if (fraSprak == 1 && brukerSvar == norskTall) {
 resultat="Helt riktig, " + spanskTall + " er " + norskTall + "!";
 antallRiktig += 1;
}
else if (fraSprak == 1 && brukerSvar != norskTall) {
 resultat="Feil, " + spanskTall + " er " + norskTall + "!";
}
antallTesterTatt += 1;
document.getElementById("svar").innerHTML=resultat + "<br>Du har nå " + antallRiktig + " av " + antallTesterTatt + " riktige!";
document.getElementById("tall").innerHTML='<button type="button" onclick="nyttTall()">Nytt tall</button><br><br><br><br><button type="button" onclick="reset()">Start på nytt</button>';
return false;
}
function reset()
{
antallRiktig = 0;
antallTesterTatt = 0;
document.getElementById("svar").innerHTML="";
document.getElementById("tall").innerHTML='<button type="button" onclick="nyttTall()">Start</button>';
}

Lenke til kommentar
Videoannonse
Annonse

Hei.

 

På koden jeg fikk hjelp med i går så har jeg prøvd å legge på noen forbedringer, noe som ikke har gått feilfritt, men jeg har funnet problemene.

 

Men nå, når jeg prøvde å lage en reset-funksjon som skal resete den (jeg skal ha den som en web-app til ios-enheter, så det er greit å ha en reset-funksjon), så vil den ikke utføre det funksjonen skal utføre når jeg trykker på knappen "Start på nytt".

 

Takker på forhånd alle.

 

Her definerer jeg variablene som globale(ble først litt overrasket over at jeg måtte sette variablene til 0, trodde det var default, men):

var antallRiktig = 0;
var antallTesterTatt = 0;

 

Her er funksjonen svaret() og funksjonen reset():

function svaret()
{
var brukerSvar=document.forms['tallet']['svar'].value;
var resultat;
if (fraSprak == 0 && (brukerSvar == spanskTall || brukerSvar == SpanskTall)) {
 resultat="Helt riktig, " + norskTall + " er " + spanskTall + "!";
 antallRiktig += 1;
}
else if (fraSprak == 0 && (brukerSvar != spanskTall || brukerSvar != SpanskTall)) {
 resultat="Feil, " + norskTall + " er " + spanskTall + "!";
}
else if (fraSprak == 1 && brukerSvar == norskTall) {
 resultat="Helt riktig, " + spanskTall + " er " + norskTall + "!";
 antallRiktig += 1;
}
else if (fraSprak == 1 && brukerSvar != norskTall) {
 resultat="Feil, " + spanskTall + " er " + norskTall + "!";
}
antallTesterTatt += 1;
document.getElementById("svar").innerHTML=resultat + "<br>Du har nå " + antallRiktig + " av " + antallTesterTatt + " riktige!";
document.getElementById("tall").innerHTML='<button type="button" onclick="nyttTall()">Nytt tall</button><br><br><br><br><button type="button" onclick="reset()">Start på nytt</button>';
return false;
}
function reset()
{
antallRiktig = 0;
antallTesterTatt = 0;
document.getElementById("svar").innerHTML="";
document.getElementById("tall").innerHTML='<button type="button" onclick="nyttTall()">Start</button>';
}

Hva med å laste siden på nytt? Forhåpentligvis er den cachet på klienten så du slipper å laste den fra serveren hele tiden. Det er kanskje ikke den peneste løsningen, men den vil funke. Ellers kan jeg ikke skjønne at reset-knappen din ikke funker.

Lenke til kommentar

Jeg kom på en liten ting, JavaScript er ille. Det vil sette inn semikolon der det tror det skal være. Altså kan det hende at det vil bli satt inn et semikolon rett etter

function reset()

, så metoden blir kalt, men ettersom det ikke er noe i den (pga semikolonet) vil det ikke skje noe.

 

I fremtiden kan det være lurt å skrive

function fn() {
…
}

i stedet for

function fn()
{
…
}

 

Hvis du vil være sikker på at JavaScript-koden din blir så rett som mulig kan du validere den ved å bruke JSLint.

 

http://www.youtube.com/watch?v=hQVTIJBZook

 

EDIT: La til link til JSLint

Endret av hjahre
Lenke til kommentar

Jeg kom på en liten ting, JavaScript er ille. Det vil sette inn semikolon der det tror det skal være. Altså kan det hende at det vil bli satt inn et semikolon rett etter

function reset()

, så metoden blir kalt, men ettersom det ikke er noe i den (pga semikolonet) vil det ikke skje noe.

 

I fremtiden kan det være lurt å skrive

function fn() {
…
}

i stedet for

function fn()
{
…
}

 

Hvis du vil være sikker på at JavaScript-koden din blir så rett som mulig kan du validere den ved å bruke JSLint.

 

http://www.youtube.com/watch?v=hQVTIJBZook

 

EDIT: La til link til JSLint

 

Det funket (trodde jeg hadde prøvd det).

 

PS: JSLint sier at ting som er riktig er feil (ting jeg har kopiert direkte fra w3schools.com, og endret på). Den har nok godt litt i stå med syntaxen, selv om annet går også :)

Lenke til kommentar
  • 2 uker senere...

Der jeg ser mange får problemer med JS, er det ofte også andre årsaker som:

De vet ikke at JS er CaSe sEnSiTiV

HTML koden er gjerne full av feil (man trigger jo JS som regel og om HTML ikke er riktig, kan det være at JS ikke finner elementet den skal trigge på, for eksempel).

 

For å huske riktig casing, kan man tenke:

Første stavelsen i funksjonsnavn pleier å være lowercase.

Deretter er hver stavelse uppercase.

 

Dette gjelder også om du skal feks bruke .getElementById() eller noe annet.

Du bør også definere egne funksjoner på samme måten, for å få dette inn i ryggmargen.

 

function sjekkFormData(...) {}

 

Ellers til trådstarter:

Om du skal øke tall med 1, er dette en "finere" måte å skrive det på:

antallTesterTatt++; (ingen mellomrom mellom plusplus og variabelnavn)

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...