Avatar billede riishoj Nybegynder
14. december 2001 - 13:56 Der er 49 kommentarer og
2 løsninger

if ...else?

Kan man lave et script, som sender en til en bestemt side, når
man indtaster korrekt tal i en formular, og som sender en til en
anden side, når alle andre (ugyldige) talværdier indtastes i
formularen.
Det må vel være noget med betingelsen \"if...else\" eller hva\'



Avatar billede kjoller Nybegynder
14. december 2001 - 14:12 #1
<html>
<head>
    <title>Untitled</title>
<SCRIPT LANGUAGE=\"JavaScript\">
function sideskift(form){
   
    if(document.testform.tal.value==1){
       
        parent.location.href=\"side1.htm\";
        }
    else
        parent.location.href=\"side2.htm\";

}
</script>
</head>

<body>
<form name=\"testform\" onsubmit=\"return sideskift()\">
<input type=\"text\" name=\"tal\" >
<input type=\"submit\">
</form>


</body>
</html>
Avatar billede kjoller Nybegynder
14. december 2001 - 14:13 #2
hov <html>
<head>
    <title>Untitled</title>
<SCRIPT LANGUAGE=\"JavaScript\">
function sideskift(){
   
    if(document.testform.tal.value==1){
        parent.location.href=\"side1.htm\";
        }
    else
        parent.location.href=\"side2.htm\";

}
</script>
</head>

<body>
<form name=\"testform\" onsubmit=\"sideskift()\">
<input type=\"text\" name=\"tal\" >
<input type=\"submit\">
</form>


</body>
</html>
Avatar billede nikolajdu Nybegynder
14. december 2001 - 14:13 #3
Den her er muligvis bedre, da den tager alle tal :))

<html>
<head>
    <title>Untitled</title>
    <script>
    function vali(hvad){

    if (isNaN (parseInt(document.f.t.value))){
    self.location.href=\"bogstavSiden.html\"
    }else{
    self.location.href=\"nummerSiden.html\"
    }


}
    </script>
</head>

<body>
<form name=\"f\" action=\"minSide.html\" method=\"get\" onsubmit=\"return vali(this)\">
<input type=\"text\" name=\"t\">
<input type=\"submit\" value=\"gogogo\">
</form>

</body>
</html>
Avatar billede kjoller Nybegynder
14. december 2001 - 14:13 #4
burde kunne klare det
Avatar billede nikolajdu Nybegynder
14. december 2001 - 14:16 #5
Jeg har vist også læst lidt forkert. Anyway så er det ihvertilfald løst :))
Avatar billede kjoller Nybegynder
14. december 2001 - 14:26 #6
det var en fejl i funktions koden men nu køre den :

<SCRIPT LANGUAGE=\"JavaScript\">

function sideskift(){
   
    if(document.testform.tal.value==1){
            self.location.href=\'side1.htm\'
        return false;
        }
    else
        document.location.href=\'side2.htm\'
        return false;

}
</script>
Avatar billede Slettet bruger
14. december 2001 - 16:03 #7
Hvilke talværdier er det helt præcist du vil teste for?
Avatar billede riishoj Nybegynder
14. december 2001 - 16:12 #8
Det drejer sig om tallene fra 1-99. Jeg vil gerne lave et system, hvor mine elever hører et tal mellem 1 og 99, indtaster tallet i en form, og derefter får at vide, om svaret er rigtigt eller forkert.
Avatar billede Slettet bruger
14. december 2001 - 16:25 #9
Så funktionen skal tjekke om tallet er mellem 1 og 99? I så fald:

<script>
function tjekTal(val) {
val = parseInt(val);
if (val == \"NaN\" || val < 1 || val > 99) return false;
return true;
}
</script>

<form onSubmit=\"return tjekTal(this.tal.value);\">
<input type=\"text\" name=\"tal\" value=\"Tal\"><br>
<input type=\"button\" value=\"Tjek tallet!\">
</form>
Avatar billede riishoj Nybegynder
14. december 2001 - 18:13 #10
Når jeg bruger kjollers script, så returneres tallet i url\'en, men jeg kan ikke få det til at skifte til en anden side. hvorfor?
Ang. nikolajdus script. Hvis jeg f.eks. vil teste tallet 5, hvor skriver jeg så det i scriptet?
Avatar billede nikolajdu Nybegynder
14. december 2001 - 19:04 #11
hos kjoller skal du bytte return false ud med return true

ang. mit: Tja det er et rigtigt godt spørgsmål :))

Mit var kun skrevet til at teste om det var et tal - ikke hvilket :(
Avatar billede riishoj Nybegynder
14. december 2001 - 19:50 #12
Jeg har prøvet at bytte return false ud med return true. Det ændrer ikke noget. Tallene bliver stadig skrevet i url\'en og jeg får intet sideskift.
Avatar billede nikolajdu Nybegynder
14. december 2001 - 20:15 #13
Sådan en blanding af det hele :))

    <script>
    function vali(hvad){

    if(hvad>0&&hvad<100){
    self.location.href=\"nummerSiden.html\"
    }else return false


}
    </script>
</head>

<body>
<form name=\"f\" action=\"minSide.html\" method=\"get\" onsubmit=\"return vali(this.t.value)\">
<input type=\"text\" name=\"t\">
<input type=\"submit\" value=\"gogogo\">
</form>
Avatar billede nikolajdu Nybegynder
14. december 2001 - 20:22 #14
Da du formodentligt gern vil gå til en specifik side kunne du kalde dem:

1.html
2.html
3.html

Så kan du kalde dem ved at skrive det pågældende tal i feltet.

Så skal du bare lige rette det til den her:

self.location.href=hvad+\".html\"

Anyway er der måske en smartere måde at gøre det hele på, men så må du forklare lidt mere om opgaven. Som det er nu vil alle tal jo gå til samme side og det holder jo ikke når du siger 5 og de taster 8 og alligevel kommer til samme side :))

/Nikolaj
Avatar billede riishoj Nybegynder
15. december 2001 - 10:45 #15
Nu er det ved at blive en spændende opgave, så jeg kan lige så godt prøve at forklare det hele fra bunden.
Jeg forestiller mig, at jeg skal lave 99 htmlsider. En side for hvert tal fra 1-99. Siderne skal indlæses i tilfældig rækkefølge (random). Når f.eks side 5 indlæses, skal en lydfil afspille tallet 5. Eleven skal så skrive 5 i et formfelt. Hvis svaret er rigtigt skal det script vi taler om sende eleven til næste talside osv.
Hvis svaret er forkert, skal eleven sendes til en \"Forkert svar side - prøv igen\"
Mon det kan lade sig gøre? Jeg ved godt, at jeg sandsynligvis skal ind og ændre scriptet på alle 99 sider, og at 99 sider er mange, så hvis en af jer har den helt geniale og sidebesparende løsning, så vil jeg blive meget glad.
mvh. Riishøj
Avatar billede Slettet bruger
15. december 2001 - 11:07 #16
Du kan jo vælge at have alle 99 lyd-filer på én side og så afspille en tilfældig for hver test. Dette ville kun kræve en enkelt html-side, men til gengæld en %¤&%¤#\"¤#\" masse <embed>-tags.
Er du frisk på det, eller er du mere til de 99 sider?
Avatar billede riishoj Nybegynder
15. december 2001 - 11:14 #17
Det lyder som en spændende løsning, men jeg er ikke sikker på, at jeg ved hvordan det skal laves!
Avatar billede riishoj Nybegynder
15. december 2001 - 11:22 #18
Men vil en sådan side med 99 lydfiler ikke blive meget langsom at indlæse?
Avatar billede Slettet bruger
15. december 2001 - 12:45 #19
Jo, men hvis de ligger på din egen computer, så gør det ikke så meget.
Jeg har designet en hel test til dig, tjek her (lyd-filerne hedder \"lyd1.wav\", \"lyd2.wav\", o.s.v.):

<html>
<head>
<title>Den store tal-test!</title>
<script>
antalTal = 99; //Antallet af tal-lyde
antalRigt = 10; //Så mange korrekte gæt, man skal have, før man vinder!

alert(\"Greetings, my friend!\\n\\nOm et øjeblik vil der blive afspillet et tal fra 1 til \" + antalTal + \"!\\nDet er så din opgave at høre godt efter og skrive det tal i boksen her på siden!\\n\\nEr du klar?\");

tilf = 0;
rigt = 0;

function tf() {
temp = Math.floor(Math.random() * antalTal) + 1;
if (temp == tilf) tf();
return temp;
}

function afspilLyd() {
tilf = tf();
eval(\"document.lyd\" + tilf + \".play()\");
}

function tjekTal(felt) {
if (felt.value == \"\" || !felt.value.match(/^[0-9]+$/)) {
alert(\"Du skal skrive et tal fra 1-\" + antalTal + \"!\");
felt.value = \"\";
felt.focus();
}
else if (felt.value == tilf) {
if (++rigt >= antalRigt) {
alert(\"Tillykke!\\nDu har fået \" + rigt + \" rigtige!\\nDu kan nu leve et liv i evig lykke!\");
felt.form.rigtige.value = rigt;
felt.maxlength = 3;
felt.value = \":-)\";
felt.form.subm.value=\"Hurraaa!\";
return;
}
alert(\"Korrekt!\\n\\nDer vi nu blive afspillet et nyt tal!\");
felt.value = \"\";
afspilLyd();
felt.focus();
felt.form.rigtige.value = rigt;
}
else {
alert(\"Desværre!\\nDet indtastede tal var forkert! Vær klar til at høre tallet igen!\");
felt.value = \"\";
felt.focus();
eval(\"document.lyd\" + tilf + \".play()\");
}
}
</script>
</head>
<body onLoad=\"afspilLyd(); document.frm.tal.focus();\">
<form name=\"frm\" action=\"#\" onSubmit=\"tjekTal(this.tal); return false;\">
Tal: <input type=\"text\" name=\"tal\" size=\"2\" maxlength=\"2\">
<br>
<input type=\"submit\" name=\"subm\" value=\"Tjek tal!\">
<br><br>
Rigtige: <input type=\"text\" name=\"rigtige\" size=\"2\" readonly></td>
</form>

<script>
document.frm.tal.value = \"\";
document.frm.rigtige.value = \"0\";
for (i = 1; i < antalTal + 1; i++) document.write(\"<embed src=\'lyd\" + i + \".wav\' name=\'lyd\" + i + \"\' hidden=\'true\' autostart=\'false\'>\");
</script>
</body>
</html>
Avatar billede riishoj Nybegynder
15. december 2001 - 15:59 #20
Foreløbig mange tak for dit store arbejde. Jeg har endnu ikke haft til til at prøve testprogrammet, men jeg vender tilbage så hurtigt som muligt.
Avatar billede riishoj Nybegynder
15. december 2001 - 17:23 #21
Jeg har prøvet dit testprogram, og det ser ud til at det bare lige er det jeg skal bruge. Men nu kommer næste problem. Når jeg så har indspillet de 99 lydfiler og kaldt dem 1.wave, 2.wave osv. hvad gør jeg så. Skal de bare ligge i mappen sammen med siden med scriptet eller hva\'. Som du nok har fornemmet er jeg ikke den store ørn ud i javascript.
Avatar billede nikolajdu Nybegynder
15. december 2001 - 17:25 #22
phoenix har valgt at sætte navnet her:

(\"<embed src=\'lyd\" + i + \".wav\'....

dvs. lyd1.wav, lyd2.wav osv.

:)

/Nikolaj
Avatar billede Slettet bruger
15. december 2001 - 17:46 #23
Yes, gør som nikolajdu siger!

P.S. Læg mærke til min random-funktion \"tf()\". Den vælger et tilfældigt tal imellem 1 og værdien af \"antalTal\", men den vælger aldrig det samme tal to gange i træk!
Avatar billede nikolajdu Nybegynder
15. december 2001 - 17:48 #24
2 gange i træk?? Er det det samme som \"aldrig det samme tal 2 gange indenfor de 100\"??
Avatar billede Slettet bruger
15. december 2001 - 18:02 #25
Ah, ja! Men det kommer til sin ret, hvis han vil teste for et tal mellem 1-5 eler noget lignende! Desuden så eksisterer der jo faktisk en chance for at få det samme tal to gange indenfor 100, så lidt gavner den vel...
Men du har ret, det var vel også kun et *sjældent* tilfælde af programmeringspral! :)
Avatar billede Slettet bruger
15. december 2001 - 18:05 #26
riishoj>> Forresten skal lydfilerne ligge i samme mappe som siden, hvis du ikke vil ind at ændre i mit script!
Avatar billede riishoj Nybegynder
15. december 2001 - 18:52 #27
(\"<embed src=\'lyd\" + i + \".wav\'....

dvs. lyd1.wav, lyd2.wav osv.

Den skal jeg lige have forklaret.

Kan du ikke vise hvad jeg skriver i (\"<embed src=
hvis mine lydfiler hedder 1.wav, 2.wav, 3.wav, 4.wav, 5.wav.,
Hvis jeg har 99 lydfiler, skal alle filnavnene så skrives her?
Avatar billede nikolajdu Nybegynder
15. december 2001 - 18:56 #28
Hvis dine lydfiler bare hedder tallet+wav så lav den om til:

document.write(\"<embed src=\'\" + i + \".wav\' name=\'\" + i + \"\' hidden=\'true\' autostart=\'false\'>\");

/Nikolaj
Avatar billede riishoj Nybegynder
15. december 2001 - 21:13 #29
Ligegyldig om jeg bruger den ene eller anden metode, så afspilles mine lydfiler. Desuden melder browseren om fejl på siden!
Jeg har forstået det rigtigt, at jeg ikke skal skrive lydfilernes navne ind nogen steder i scriptet, de skal bare befinde sig i samme mappe som siden med scriptet.
Avatar billede nikolajdu Nybegynder
15. december 2001 - 22:17 #30
Hvilken fejl??
Avatar billede riishoj Nybegynder
15. december 2001 - 22:30 #31
Tja, det ved jeg ikke. Jeg kan bare se den gule advarselstrekant og beskeden \" der opstod en fejl på siden\" Skal jeg skrive lydfilernes navne ind i scriptet?
Avatar billede nikolajdu Nybegynder
15. december 2001 - 23:45 #32
Der står jo i hvilken linie der er fejl. Du tvinger mig jo til at skulle lave både et par lydfiler og teste det af - Synes det er noget besværligt.

Og undskyld hvis jeg lyder lidt fornærmet, men min holdning er et eller andet sted også at folk der vil have hjælp må holde sig til. Når der går timer mellem hver indlæg så mister man helt automatisk interessen.

Specielt når spørgsmål er dårligt defineret og udvider sig løbende.

Smid siden op som den er nu og giv et link, så bliver det endnu lettere :))

/Nikolaj
Avatar billede riishoj Nybegynder
16. december 2001 - 00:25 #33
Beklager, hvis jeg har været for længe om at svare. Her er et link

www.assens-guiden.dk/taltest
Avatar billede nikolajdu Nybegynder
16. december 2001 - 00:29 #34
Det er bare fint. Det er min rettelse der gav problemer, da jeg ændrede filnavnet til1.wav tog jeg også ID med.

document.write(\"<embed src=\'\" + i + \".wav\' name=\'lyd\" + i + \"\' hidden=\'true\' autostart=\'false\'>\");

Så burde den være der og no hard feelings med ventetiden, man kan af og til bare blive noget frustreret når man nu gerne vil hjælpe lidt til :))

/Nikolaj
Avatar billede riishoj Nybegynder
16. december 2001 - 00:43 #35
Jeg har lavet ændringen og lagt den op, men jeg kan stadig ikke høre en lyd! Desuden melder den stadig fejl.
Hvis du svarer mig nu, må du være et meget tålmodigt menneske!!
Avatar billede nikolajdu Nybegynder
16. december 2001 - 00:57 #36
Ehem der er intet ændret i den version du har lagt op??

Har testet den her af og den virker fint:

<html>
<head>
<title>Den store tal-test!</title>
<script>
antalTal = 5; //Antallet af tal-lyde
antalRigt = 5; //Så mange korrekte gæt, man skal have, før man vinder!

alert(\"Greetings, my friend!\\n\\nOm et øjeblik vil der blive afspillet et tal fra 1 til \" + antalTal + \"!\\nDet er så din opgave at høre godt efter og skrive det tal i boksen her på siden!\\n\\nEr du klar?\");

tilf = 0;
rigt = 0;

function tf() {
temp = Math.floor(Math.random() * antalTal) + 1;
if (temp == tilf) tf();
return temp;
}

function afspilLyd() {
tilf = tf();
eval(\"document.lyd\" + tilf + \".play()\");
}

function tjekTal(felt) {
if (felt.value == \"\" || !felt.value.match(/^[0-9]+$/)) {
alert(\"Du skal skrive et tal fra 1-\" + antalTal + \"!\");
felt.value = \"\";
felt.focus();
}
else if (felt.value == tilf) {
if (++rigt >= antalRigt) {
alert(\"Tillykke!\\nDu har fået \" + rigt + \" rigtige!\\nDu kan nu leve et liv i evig lykke!\");
felt.form.rigtige.value = rigt;
felt.maxlength = 3;
felt.value = \":-)\";
felt.form.subm.value=\"Hurraaa!\";
return;
}
alert(\"Korrekt!\\n\\nDer vi nu blive afspillet et nyt tal!\");
felt.value = \"\";
afspilLyd();
felt.focus();
felt.form.rigtige.value = rigt;
}
else {
alert(\"Desværre!\\nDet indtastede tal var forkert! Vær klar til at høre tallet igen!\");
felt.value = \"\";
felt.focus();
eval(\"document.lyd\" + tilf + \".play()\");
}
}
</script>
</head>
<body onLoad=\"afspilLyd(); document.frm.tal.focus();\">
<form name=\"frm\" action=\"#\" onSubmit=\"tjekTal(this.tal); return false;\">
Tal: <input type=\"text\" name=\"tal\" size=\"2\" maxlength=\"2\">
<br>
<input type=\"submit\" name=\"subm\" value=\"Tjek tal!\">
<br><br>
Rigtige: <input type=\"text\" name=\"rigtige\" size=\"2\" readonly></td>
</form>

<script>
document.frm.tal.value = \"\";
document.frm.rigtige.value = \"0\";
for (i = 1; i < antalTal + 1; i++) document.write(\"<embed src=\'\" + i + \".wav\' name=\'lyd\" + i + \"\' hidden=\'true\' autostart=\'false\'>\");


</script>
</body>
</html>
Avatar billede riishoj Nybegynder
16. december 2001 - 01:19 #37
Det er altså meget mystisk. Her kopieret ovenstående ind og lagt det op påny. Det virker bare ikke hos mig. Virker det jeg har lagt op på serveren hos dig?
PS jeg har lydkort og højtaleren er tændt!!
Avatar billede nikolajdu Nybegynder
16. december 2001 - 08:54 #38
riishoej - Kan du ikkesmide linket direkte til filen du har uploadet fremfor til mappen.

Jeg er ike hjemme igen før i aften, men phoenixv kigger nok forbi inden da :)

/Nikolaj
Avatar billede riishoj Nybegynder
16. december 2001 - 10:40 #39
Avatar billede nikolajdu Nybegynder
16. december 2001 - 10:44 #40
Virker da perfekt ???
Avatar billede riishoj Nybegynder
16. december 2001 - 11:12 #41
Hvilken browser bruger du? Jeg har testet programmet med følgende:

MIE 5.0 - ingen afspilning af lyden, fejlmeddelelse, og det tæller ikke de rigtige svar.

Netscape 4.76 - ingen lyd men det tæller de rigtige svar.

Netscape 6.0 - som MIE men ingen fejlmeddelelse
Avatar billede Slettet bruger
16. december 2001 - 17:38 #42
Med IE5 virker det fint nok for mig! Men hvorfor tæller du fx \"1, 2, 3, 4, 5\" 5.wav? Er det ikke meningen, at du bare skal sige \"5\"?
Avatar billede Slettet bruger
16. december 2001 - 17:41 #43
Men NS6.2 er ikke glad for, at man afspiller \"document.lyd1\" med play()... Jeg ved ikke, hvad problematikken her skyldes. NS6.2 har åbenbart ikke den samme måde at behandle <embed>\'s på!
Avatar billede riishoj Nybegynder
16. december 2001 - 19:03 #44
Jo, lydfilerne er lidt kiksede, men det er vel ikke grunden til, at jeg ikke kan få scriptet til at afspille lyden. Virker den form, som tæller antal rigtige i IE5 hos dig?
Så det er altså stadig en gåde, hvorfor jeg ikke kan høre lyden. Kan det have noget at gøre med indstillingerne i min IE5?
Avatar billede riishoj Nybegynder
16. december 2001 - 19:49 #45
Husets anden computer kører Windows ME og IE 5.5.
Den afspiller heller ikke lydfilerne og supplerer tillige med følgende meddelelse:
\"Der opstod en fejl under kørslen. Linie 20. Fejl: Objektet understøtter ikke denne egenskab eller metode\"
Avatar billede Slettet bruger
16. december 2001 - 20:45 #46
Det hele virker altså perfekt i min IE5! Både i mit eget og i dit eksempel! Men jeg flikker en ny løsning med 99 html-sider sammen til dig til i morgen eller i overmorgen, så!
Avatar billede riishoj Nybegynder
16. december 2001 - 22:20 #47
Jeg er næsten helt flov over al den ravage jeg har lavet med min ide, men nu er jeg jo blevet grebet af det. Prøver at teste scriptet på mit arbejde i morgen for at se, om det virker der. Hvis det er tilfældet, skal du nok få det at vide hurtigst muligt. Det vil sandsynligvis først være efter kl. 16.
Avatar billede riishoj Nybegynder
17. december 2001 - 16:24 #48
Computeren på mit arbejde kunne heller ikke afspille lydfilerne. Mystisk!
Avatar billede nikolajdu Nybegynder
18. december 2001 - 08:20 #49
Jeg brugte IE 6.0
Avatar billede riishoj Nybegynder
19. december 2001 - 18:49 #50
Kræver <EMBED> koden ikke, at bestemte plug-ins er installeret i browseren. Er det måske her mit problem ligger med afspilning af lyd?
Avatar billede riishoj Nybegynder
22. december 2001 - 16:03 #51
Da jeg opdaterede til IE5.5 virkede scriptet, så det var altså det der skulle til.

Mange tak for hjælpen. Håber jeg har fordelt point på retfærdig vis
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester