02. januar 2002 - 22:46Der er
38 kommentarer og 1 løsning
Valg ag tilfældigt tal
Jeg har med stor og tålmodig hjælp fået bakset nedenstående sammen, som jeg skal brug til at lære børn i 1. kl. at kende tallene fra 1-99. Problemet er, at når jeg sætter AntalTal større end 70, så går systemet i sort, enten fryser computeren eller der sker underlige ting med browseren. Kan nogen se, hvad der er galt? Venlig hilsen Riishøj
<html> <head> <title>Den store tal-test!</title> <script> antalTal =99; //Antallet af tal-lyde antalRigt = 99; //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; }
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Jeg vil tro fejlen kommer af de der 100 <embed kommandoer du skriver på siden, det fylder ad pommeren til at oprette så mange embed objekter så mon ikke du får trashing (for mange diskswaps).
Jeg skulle jo helst kunne teste tallene op til 99. En anden mulighed kunne være at dele scriptet op i 2 dele. Første del tester fra 1-50 og anden del tester fra 51-99. Det har jeg forsøgt mig med, men det er ikke lykkedes mig at ændre scriptet, så det kan teste tallene fra 51-99. Riishøj
en tredie mulighed er at lave det i frames og kun skrive den ene embed kommando der nu skal høres ind i en anden ramme når den skal afspilles. Dine lyde vil ikke reagere så hurtigt men det bliver en del mindre:
Ja og nej, jeg har prøvet adskillige gange, men kan ikke få det til at virke med åt skifte lyd på den måde. Derfor forslagetom at skrive en ramme med hele <embed kommandoen i. Det kan jeg få til at virke selvom det godtnok er noget klumpet :( Hvis i bruger programmet internt på skolen med bare IE browsere kan man lave det endnu nemmere med en innerHTML der udskiftes.
Kan du forklare nærmere, hvordan man skriver en ramme med embed-kommandoen i? Programmet skal bruges internt på skolens intranet via IE browsere, men jeg har ingen anelse om, hvad en innerHTML er!:( Riishøj
i din \'denOpgavefilDuAlleredeHar.html\' fil indsætter du så den funktion afspilLyd() der står i kommentar 02/01 2002 23:10:22 Og så skulle det gerne virke
<html> <head> <title>Den store tal-test!</title> <script> antalTal =99; //Antallet af tal-lyde antalRigt = 99; //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() { // KUN denne funktion er blevet ændret. tilf = tf(); parent.lydFrame.document.open(\'text/html\',\'replace\'); parent.lydFrame.document.write( \"<embed src=\'\" +tilf +\".wav\' loop=1 \" +\"autostart=\'true\'></embed>\" ); parent.lydFrame.document.close(); }
OK foreløbig tak for hjælpen. Jeg bliver nødt til at vente til i morgen med at afprøve dit forslag. Vender tilbage i morgen med respons, så jeg håber du (I) kigger forbi! mvh en søvnig Riishøj
Jeg har desværre først haft lejlighed til at afprøve jacobas forslag nu. Jeg kan ikke få framesettet til at indlæse opgavefilen. Den er helt blank når den indlæses. Jeg h a r indsat det rigtige filnavn i framesettet. Håber du hænger på endnu. mvh. riishøj
i linien <frame src=\"\'about:blank\' name=\'lydFrame\'\"> har du et extra sæt \" er der ikke burde være der. skriv istedet: <frame src=\'about:blank\' name=\'lydFrame\'>
og jeg stavede galt i linien <framset cols=\"15,*\"> det skal være <frameset cols=\"15,*\"> tilføjet et e efter m-et
Det virkede med dine ændringer, men som du måske har bemærket havde jeg sat AntalTal=5. Da jeg ændrede det til 99 gik det helt galt igen. Jeg har lagt ændringen ud. Prøv selv!
og så allernederst i filen \'nytalttest.html\' skal vi have fjernet hele det script der skriver embed kommandoer. det skal bare slettes fra og med <script... til og med </script>
Det hjalp. Kan nu indlæses AntalTal=99 uden at gå ned. Desværre kunne jeg ikke høre om lyden afspilles, da jeg kun har uploaded 5 lydfiler (1-5), så jeg prøvede at ændre til AntalTal=5 igen. Lyden bliver afspillet, men den samme lydfil bliver gentaget igen og igen, indtil man trykker tallet, og så bliver den næste gentaget også videre.
ups det er vist mig der har kvajet mig i den embed kommando der skrives. Der skal nok stå loop=0 istedet for loop=1 ( IE siger 0 betyder false(ingen loop) og alt andet betyder true(loop foerever), NS siger 1 betyder afspil een gang og 5 betyder afspil 5 gange ) Browserproducenterne er meget kreative i deres måder at drille hinanden :(
Tusind tak. Jeg tror faktisk, at du har knækket nøden. Jeg bliver nødt til at vente til i morgen med at teste scriptet med de 99 lydfiler (arbejdet tager for meget af min fritid) , men jeg har stærkt på fornemmelsen at det virker. Jeg vender tilbage i morgen, så du kan få dine velfortjente points. En lille designmæssig detalje. Kan framesettet komme til at fylde hele siden, så man ikke kan se det ude i venstre side. Jeg kunne evt. tænke mig, at siden loades i full screen. mvh.riishøj:)
Scriptet virker perfekt også med de 99 lydfiler. Jeg har fundet ud af at få opgavefilen til at fylde (næsten) hele siden ved at sætte frameset cols=1. Endnu en gang tusind tak for hjælpen. Du har virkelig fortjent dine 60 points. mvh. riishøj:)
Jeg var nok lidt hurtig med points, for der en en ting som ikke virker. Hvis man skriver forkert, bliver samme tal ikke gentaget, men scriptet starter forfra. Det gjorde det ikke før du lavede ændringerne. Hvad kan det skyldes? mvh.riishøj
Så er sidste version lagt ud. Prøv og skriv et forkert tal. Hos mig starter programmet igen. Det er godt nok versionen med 5 lydfiler, men det gør vel ingen forskel. mvh. riishøj
OK. det var nær slutningen af scriptet. hvor scriptet prøvede at afspille lyden igen. de brugte en kommando somom de der 100 <embed kommandoer stadig fandtes.
Næsten altid i programmering gøæder der om kune at gøre tingene eet enkelt sted, så jeg har ændret i funktionen afspilLyd så den både kan bruges når der skal vælges et nyt nummer og afspilles og når det gamle nummer skal afspilles igen. Funktionen afspillyd har fået en parameter. Alt ialt er der ændret i 4 scriptlinier, og også i bodykommandoen. Desuden har jeg lagt erikJakobsens ændring ind i funktionen tf() så der mindre ofte bliver genvalgt samme tal.
hvis du paster nedenstående ind istedet for det der står nu (fra starten af scriptet til og med din <body kommando) skulle den være der:
<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) return tf(); return temp; }
function afspilLyd( nr ) { // KUN denne funktion er blevet ændret. tilf = nr; parent.lydFrame.document.open(\'text/html\',\'replace\'); parent.lydFrame.document.write( \"<embed src=\'\" +tilf +\".wav\' loop=0 \" +\"autostart=\'true\'></embed>\" ); parent.lydFrame.document.close(); }
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( tf() ); 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(); afspilLyd( tilf ); // her blev afspillet en lyd somom de mange embed\'s var der endnu } } </script> </head> <body onLoad=\"afspilLyd( tf() ); document.frm.tal.focus();\" bgcolor=\"#39AE8B\">
Tak for dine ændringer som virker fint. Beklager at jeg først har reageret nu, men jeg har ikke været hjemme. Hvordan bliver man så skrap til javascript. Findes der programmer, som kan hjælpe en på vej a la html editorer? mvh. riishøj:)
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.