12. september 2002 - 13:56Der er
7 kommentarer og 2 løsninger
Splice eller logik problemer
Pröver at finna ud af mit förste javascript.
Det er et lille program för at stille spörgsmål og få points, med enten er logiken fel eller så er det splice som driller.
Jag vill altså gerne at den tar vek spörgsmålet hvis det er rigtig.
Jeg ville vare taknemmlig hvis nogen gad se på koden. Malmöitiske hilsen/Camilla.
Kod-// er desvärre på svensk
<html> <head> <title>MittFörhör. Ställer alla frågor i slumpvis ordning</title> <script language="JavaScript"> <!-- Här börjar skriptet
// Skapar frågor och svar & sätter minaPoints till heltalet 0
var minaFragor = new Array ("Vad betyder den retoriska termen: Docere ?", "Vad betyder den retoriska termen: Movere ?", "Vad betyder den retoriska termen: Delectare ?", "Vad betyder den retoriska termen: Natura ?", "Vad betyder den retoriska termen: Ars ?", "Vad betyder den retoriska termen: Usus ?" ); var minaSvar = new Array ("Informera", "Engagera", "Underhålla", "Medfödda anlag för retorik", "Teorin", "Praktisk erfarenhet"); var minaPoints = 0.0;
// Här slutar skriptet -->
</Script> </head> <body> <script>
// (Ok. Först definierar jag antaletFrågor som vid start är 6 st.) // Antalet gånger skriptet skall köras // så länge a dvs. antalet frågor är mindre än 0. Så...hmm
var antaletFragor = minaFragor.length; for (a = antaletFragor;a>0;a--){
// Ta fram antalfrågor och visar
antaletFragor = minaFragor.length; alert("Antalet frågor är "+ antaletFragor);
// Tar fram ett slumvis utvald nr av antalet frågor // samt visar slumpnummret
var slumpNummer=Math.floor(Math.random()*antaletFragor) alert("Slumpfrågan är nr: "+ slumpNummer);
// Frågar den utvalda frågan och definierar
var rattFraga = minaFragor[slumpNummer]; var svar = prompt(rattFraga);
Min explorer kender splice, men du skal bare skrive: minaFragor.splice(slumpNummer,1); minaSvar.splice(slumpNummer,1);
da du (vist) gerne vil have slettet det spørgsmål der lige er svaret rigtigt på? Når du skriver 0 bliver der ikke slettet noget! Hvis du også gerne vil have slettet spørgsmål der er svaret forkert på, skal du bare tilføje de to splice linier i blokken med alert("Fel svar.");
I øvrigt er det ret svært at svare på et spørgsmål præcis som du har svaret (med caseSensitive, og samme ordvalg). Det var måske en ide at nøjes med at søge efter keywords i svaret.
Det kunne være noget i retning af:
if ((svar.length>0)&&(svar.toUpperCase().indexOf(minaSvar[slumpNummer])!=-1)){ i stedet for if (svar == minaSvar[slumpNummer]){
og så kun have et enkelt essentielt ord med i svaret (skrevet UPPERCASE)
hold da op ... jeg ser jo lige at der er 200 point på højkant. Så må jeg da hellere skrive helt ud hvad jeg mener (lidt point-luder er der vel i os alle?) ;) ---8<--------------- <html> <head> <title>MittFörhör. Ställer alla frågor i slumpvis ordning</title> <script language="JavaScript"> <!-- Här börjar skriptet
// Skapar frågor och svar & sätter minaPoints till heltalet 0
var minaFragor = new Array ("Hvilket dyr har verdens længste hals?", "Hvad spiser tegneseriemus helst?", "Hvad årstal døde JFK?", "Hvem skrev 'Alice i eventyrland'?", "Hvad hedder Bin Laden til fornavn?", "Hvilket europæisk land har et rødt flag med et sort dyr i midten?" ); var minaSvar = new Array ("GIRAF", "OST", "63", "CARROLL", "OSAMA", "ALBANIEN"); var minaPoints = 0.0;
// Här slutar skriptet -->
</Script> </head> <body> <script>
// (Ok. Först definierar jag antaletFrågor som vid start är 6 st.) // Antalet gånger skriptet skall köras // så länge a dvs. antalet frågor är mindre än 0. Så...hmm
var antaletFragor = minaFragor.length; for (a = antaletFragor;a>0;a--){
// Ta fram antalfrågor och visar
antaletFragor = minaFragor.length; // alert("Antalet frågor är "+ antaletFragor);
// Tar fram ett slumvis utvald nr av antalet frågor // samt visar slumpnummret
var slumpNummer=Math.floor(Math.random()*antaletFragor) // alert("Slumpfrågan är nr: "+ slumpNummer);
// Frågar den utvalda frågan och definierar
var rattFraga = minaFragor[slumpNummer]; var svar = prompt(rattFraga);
if ((svar.length>0)&&(svar.toUpperCase().indexOf(minaSvar[slumpNummer])!=-1)){
med ovenstående program vil alle nedenstående svar på dyret med verdens længste hals f.eks. blive godkendt: "giraf" "Giraf" "Giraffen" "Giraffen har verdens længste hals" "Det har den kenyanske giraf" o.s.v. og det kan både være "Carroll", "Lewis Carroll" og "Sir Lewis Carroll" der har skrevet 'alice i eventyrland' (til gengæld tester "Arne Carroll" falsk positiv, mens "Lewis Caroll" tester negativ ... men det kræver lidt mere at slippe udenom!)
Håber at du kan bruge det! =)
Synes godt om
Slettet bruger
13. september 2002 - 15:05#6
Ja, jeg skulle have sagt:
minaFragor = new Array(); minaSvar = new Array();
... istedet.
o-zone>> Det er da vist ikke særligt smart at teste med indexOf. Prøv fx at tage et spørgsmål som: "Hvilken ugedag er det i dag?" Hvis vi nu antager, at det er den trettende, så vil svaret "1" eller "3" også blive godkendt! Men det er en god idé at konvertere til lowercase.
Fedt ! 1 ikke 0. Neaste ting jeg skulle igang med er ju at casefixa med der var du kvik o-zone. Mange tak også för at jeg nu har lidt variation i mine spörgsmål *smiler* Du får pointsen nesten hela pointsen ! Ok Til phoenixv, li den link jeg har brug för !
Hmmm...undskyld er visst ikke helt fix idag *hmm* 190 til o-zone 10 til phoenixv
tak,phoenixv...
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.