herdon Skrevet 3. oktober 2012 Del Skrevet 3. oktober 2012 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
hjahre Skrevet 3. oktober 2012 Del Skrevet 3. oktober 2012 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
herdon Skrevet 3. oktober 2012 Forfatter Del Skrevet 3. oktober 2012 Det ble med å laste inn siden på nytt, men hvis noen finner noen feil, så si ifra. Lenke til kommentar
hjahre Skrevet 3. oktober 2012 Del Skrevet 3. oktober 2012 (endret) 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 3. oktober 2012 av hjahre Lenke til kommentar
herdon Skrevet 3. oktober 2012 Forfatter Del Skrevet 3. oktober 2012 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
hjahre Skrevet 3. oktober 2012 Del Skrevet 3. oktober 2012 JSLint er nok kanskje litt vel nazi noen ganger, spesielt med mellomrom på de rette stedene. Det er heldigvis noe man kan velge å se bort fra, men andre ting som f.eks. === og ikke == er viktige å få med seg. Lenke til kommentar
Olavxxx Skrevet 11. oktober 2012 Del Skrevet 11. oktober 2012 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
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå