herdon Skrevet 13. oktober 2012 Del Skrevet 13. oktober 2012 Hei. Jeg prøver å få nettsiden min til å kunne godta en input den ellers ikke ville godta, på hva som har hvert input fra en tidligere form, men uansett om jeg har gjort at den skal godta den type input eller ikke, så godtar den ikke inputen jeg skriver inn. Variabelnavnet på variabelen som inneholder om den skal godta (ja) eller ikke godta (nei) er godtaUtenTegn og den skal av hva jeg ser godta den. Her lagres infoen i variabelen (variabelen er definert som global tidligere i scriptet): function validerForm() { godtaUtenTegn = document.forms['start']['godtaUtenTegn'].value; glosesett = document.forms['start']['glosesett'].value; Frasprak = document.forms['start']['sprak'].value; if (glosesett == 1) { glosesettFra = 1; glosesettTil = 71; } else if (glosesett == 2) { glosesettFra = 72; glosesettTil = 111; } nyttOrd() } Her er svar-funksjonen som skal finne ut om svaret er rett eller galt: function svaret() { brukerSvar=document.forms['ordet']['svar'].value; if (fraSprak == 0 && (brukerSvar == spanskOrd || brukerSvar == SpanskOrd)) { resultat = "Helt riktig, " + norskOrd + " er " + spanskOrd + "!"; antallRiktig += 1; } else if (fraSprak == 0 && (godtaUtenTegn == "ja" && (brukersvar == spanskOrdUten || brukersvar == SpanskOrdUten))) { resultat = "Helt riktig, " + norskOrd + " er " + spanskOrd + "!"; antallRiktig += 1; } else if (fraSprak == 0 && ((brukerSvar != spanskOrd || brukerSvar != SpanskOrd) && (godtaUtenTegn == "nei" || (godtaUtenTegn == "ja" && (brukersvar != spanskOrdUten || brukersvar != SpanskOrdUten))))) { resultat = "Feil, " + norskOrd + " er " + spanskOrd + "!"; } else if (fraSprak == 1 && (brukerSvar == norskOrd || brukerSvar == NorskOrd)) { resultat="Helt riktig, " + spanskOrd + " er " + norskOrd + "!"; antallRiktig += 1; } else if (fraSprak == 1 && (brukerSvar != norskOrd || brukerSvar != NorskOrd)) { resultat="Feil, " + spanskOrd + " er " + norskOrd + "!"; } if (merk != "null") { resultat = resultat + "<br><br><strong>Merk:</strong> " + merk; } antallTesterTatt += 1; document.getElementById("svar").innerHTML=resultat + "<br><br>Du har nå " + antallRiktig + " av " + antallTesterTatt + " riktige!"; document.getElementById("ord").innerHTML='<button type="button" onclick="nyttOrd()">Nytt ord</button><br><br><br><br><button type="button" onclick="reload()">Start på nytt</button>'; return false; } Her er formen der man kan velge blant annet om man skal godta inputen som nå ikke vil godtas uansett: <form name="start" action=""> <select name="godtaUtenTegn"> <option value="nei">Godta bare med evt. spesialtegn</option> <option value="ja">Godta også uten evt. spesialtegn</option> </select><br> <select name="glosesett"> <option value="alle">Ta med alle glosesett</option> <option value="1">Glosesett 1</option> <option value="2">Glosesett 2</option> </select><br><select name="sprak"> <option value="tilfeldig">Tilfeldig hvilket språk den tar fra</option> <option value="0">Bare fra norsk</option> <option value="1">Bare fra spansk</option> </select><br><br></form><button type="button" onclick="validerForm()">Start</button> PS: Hvis det er til noen hjelp, så legger jeg ved et utdrag av der det inputen brukersvar skal sjekkes opp mot lagres i variabler (hvilken case-del som velges bestemmes av en random-funksjon: case 99: spanskOrd = "médico" SpanskOrd = "Médico" spanskOrdUten = "medico" SpanskOrdUten = "Medico" norskOrd = "lege" NorskOrd = "Lege" break; case 100: spanskOrd = "mucho" SpanskOrd = "Mucho" spanskOrdUten = "mucho" SpanskOrdUten = "Mucho" norskOrd = "mye" NorskOrd = "Mye" break; Håper noen finner ut av det, for jeg finner ikke ut av det. Lenke til kommentar
herdon Skrevet 14. oktober 2012 Forfatter Del Skrevet 14. oktober 2012 Jeg har nå med prøving og feiling sett at det må ha noe med der den sjekker om den skal godta det, og om det da er riktig ( else if (godtaUtenTegn == "ja" && (brukersvar == spanskOrdUten || brukersvar == SpanskOrdUten)) { ), men aner absolutt ikke hvorfor den ikke vil godta det (den godtar det heller ikke når hvis jeg sier if (godtaUtenTegn == "nei" && (brukerSvar == spanskOrd || brukerSvar == SpanskOrd)) { (noe jeg bare prøvde for å prøve å se hva som skjedde). Er dette til mer hjelp? PS: Når jeg skriver alert ("Her er dine innstillinger:\nGodta uten evt. spesialtegn: " + godtaUtenTegn + "\nGlosesett: " + glosesett + "\nSpråk fra: " + Frasprak); så sier den at alle variablene er som forventet ifølge inputen. Lenke til kommentar
Crowly Skrevet 15. oktober 2012 Del Skrevet 15. oktober 2012 (endret) Parentesene dine er ikke helt riktig her i forhold til hva du ønsker å gjøre: ((brukerSvar != spanskOrd || brukerSvar != SpanskOrd) && (godtaUtenTegn == "nei" || (godtaUtenTegn == "ja" && (brukersvar != spanskOrdUten || brukersvar != SpanskOrdUten)))) Kan være en fordel å dele opp en lang if streng over flere linjer, slik at det blir enklere å se hva som hører sammen. else if (fraSprak == 0 && ( ((brukerSvar != spanskOrd || brukerSvar != SpanskOrd) && godtaUtenTegn == "nei") || ((brukersvar != spanskOrdUten || brukersvar != SpanskOrdUten) && godtaUtenTegn == "ja" ) )) { resultat = "Feil, " + norskOrd + " er " + spanskOrd + "!"; } Endret 15. oktober 2012 av Crowly Lenke til kommentar
gablank Skrevet 15. oktober 2012 Del Skrevet 15. oktober 2012 (endret) Har sett kjapt over, eneste jeg la merke til var at i første delen setter du Frasprak = document.forms (..), mens i andre delen bruker du fraSprak. Du bruker også brukerSvar og brukersvar om hverandre, antar at det kun er en variabel. Ta også en titt i javacript console i chrome (evnt. lignende i andre nettlesere). Hvis du laster opp en .zip med filene så kan jeg ta en titt! Endret 15. oktober 2012 av gablank Lenke til kommentar
Crowly Skrevet 15. oktober 2012 Del Skrevet 15. oktober 2012 (endret) Du bruker også brukerSvar og brukersvar om hverandre, antar at det kun er en variabel. (svarer selv om det ikke er til meg )Det er for å skille på case, se switchen i siste kode blokk i første post, eks: spanskOrd = "mucho" SpanskOrd = "Mucho" Er nok bedre å bruke toUpperCase() (alternativt toLowerCase() )når man utfører sjekken, men mulig det kan være problemer med spesial tegn, f.eks: else if (fraSprak == 0 && ( (brukerSvar.toUpperCase() != spanskOrd.toUpperCase() && godtaUtenTegn == "nei") || (brukersvar.toUpperCase() != spanskOrdUten.toUpperCase() && godtaUtenTegn == "ja" ) )) { resultat = "Feil, " + norskOrd + " er " + spanskOrd + "!"; } Da slipper man å tenke case og å definere ting flere ganger (forutsatt at spesial tegn ikke skaper problemer). Endret 15. oktober 2012 av Crowly Lenke til kommentar
Gjest Slettet+9871234 Skrevet 15. oktober 2012 Del Skrevet 15. oktober 2012 jquery.com bare hyggelig. Lenke til kommentar
Crowly Skrevet 16. oktober 2012 Del Skrevet 16. oktober 2012 Hvordan vil jQuery løse problemet her? Problemet er/var feil i logikken, ikke i syntaksen. Det er også hyggelig å legge ut ett løsningsforslag, hvis ikke så er man lite hjelpsom 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å