Avatar billede slejpnir Nybegynder
22. september 2007 - 23:34 Der er 5 kommentarer og
2 løsninger

Forenkling af koden især ved optælling af points

Jeg har kigget på denne kode, der har været på i et tidligere spørgsmål og synes, at den må kunne forenkles.
Det er især når der bliver akkumuleret antal rigtige mv., at jeg har en fornemmelse af, at noget gøres omstændeligt.
Kan det ikke gøres lidt enklere?

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>

<meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1">
<title></title>
<script type="text/javascript"><!--
function nulstil(){
opg=0;rig=0;pro=0;
P1O=0;P2O=0;
P1R=0;P2R=0;
facit=0;
saveregneart=0;
savetalomraade=0;

document.REGNEOPGAVER.TALOMRAADE.value="";
document.REGNEOPGAVER.TAL1.value="";
document.REGNEOPGAVER.TAL2.value="";
document.REGNEOPGAVER.ANTALOPGAVER.value="0";
document.REGNEOPGAVER.ANTALRIGTIGE.value="0";
document.REGNEOPGAVER.SCOREPROCENT.value="0";
document.REGNEOPGAVER.PLO1.value="0";
document.REGNEOPGAVER.PLO2.value="0";
document.REGNEOPGAVER.PLR1.value="0";
document.REGNEOPGAVER.PLR2.value="0";
RIGTIGE=0;
tjek=-1;

time = 600;
stopCounter();
document.getElementById("MyTime").firstChild.nodeValue = time;
}

var time = 600;
var timerId = false;

function startCounter(){
    if (timerId) return;
    timerId = setInterval('CountDown();',1000);
}

function stopCounter(){
    if (!timerId) return;
    clearInterval(timerId);
    timerId = false;
}

function CountDown(){
    if(time > 0)    {
        time = time-1;
        document.getElementById("MyTime").firstChild.nodeValue = time;
    } else {
        clearInterval(timerId);
    }
}

//--></script>
<style type="text/css">
#kontakt{
font-family:sans-serif;
position:absolute;
left:300px;
}
</style>
</head>
<body bgcolor="#d0ffd0" link="#0000FF" vlink="#0000FF" alink="#0000FF" onload="nulstil()">

<form name="REGNEOPGAVER" style="font-size:medium;font-family:verdana; text-align: center;" action="">

<Center>
  <input type="button" value="Vejledning" name="VEJLEDNING">
  <input type="button" value="Addition" name="PLUS">
  <button onclick="startCounter();return false;" style="cursor:pointer;">Start nedtælling!</button>
  <button onclick="stopCounter();return false;" >Stop!</button>
</center>
<br>

<Center><font size = "4"><span id="MyTime">600</span></font>
<table border="0">
  <tr><td>Vælg et talområde </td>
    <td><input type="button" value="0-10" name="TALA"></td>
    <td><input type="button" value="0-20" name="TALB"></td>
  </tr>
  <tr><td colspan="6" align="center">Du valgte:<input type="text" name="TALOMRAADE" size="6"></td>
  </tr>
</table>
<hr>
<table>
<tr><td><input type="text" name="TAL1" size="4"></td></tr>
<tr><td><font face="verdana" size="5"> +</FONT></td></tr>
<tr><td><input type="text" name="TAL2" size="4"></td></tr>
<tr><td><font face="verdana" size="5"> =</FONT></td></tr>
<tr>
  <td>
    <input type="text" name="RESULTAT" size="6">
    <input type="submit" value="TJEK" name="TJEK"></td>
  </tr>
</table>
<br><hr>
<table border="1" bordercolor="red">
  <tr><td Colspan=5 align=center>Opsummering</td>
  </tr>
  <tr>
    <td align="center">0-10</td>
    <td align="center">0-20</td>
  </tr>
  <tr>
    <td><input type="text" name="PLR1" size="1">
    <input type="text" name="PLO1" size="1"></td>
    <td><input type="text" name="PLR2" size="1">
    <input type="text" name="PLO2" size="1"></td>


<TR>
<TD colspan="4" align="left">Antal rigtige, i alt:</td><td><input type="text" name="ANTALRIGTIGE" size="4"></td></tr>
<TR>
<TD colspan="4" align="left">Antal forsøg, i alt:</td><td><input type="text" name="ANTALOPGAVER" size="4"></td></tr>
<TD colspan="4" align="left">Antal rigtige i %, i alt:</td><TD><input type="text" name="SCOREPROCENT" size="4"></td></tr>
<TR>
<td colspan="5" align="center"><input type="button" value="NULSTIL" name="NULSTIL"></td></tr>
  </tr>

</table>
<br><hr>


</center>
</form>


<script type="text/javascript">
//Regneart vælges.
document.REGNEOPGAVER.PLUS.onclick=regneart1;
function regneart1(){

document.REGNEOPGAVER.TALOMRAADE.value="";
document.REGNEOPGAVER.TAL1.value="";
document.REGNEOPGAVER.TAL2.value="";
saveregneart="A";
gemregneart();
}
//Regneart gemmes.
saveregneart=0;
function gemregneart(){
Gemregneart=[saveregneart];
}
//Talområde vælges.
document.REGNEOPGAVER.TALA.onclick=talvaerdi1;
savetalomraade=0;
function talvaerdi1(){
document.REGNEOPGAVER.TALOMRAADE.value="0-10";
savetalomraade="1";
Gemtalomraade=[savetalomraade];
Nyopgave();
}
document.REGNEOPGAVER.TALB.onclick=talvaerdi2;
function talvaerdi2(){
document.REGNEOPGAVER.TALOMRAADE.value="0-20";
savetalomraade="2";
Gemtalomraade=[savetalomraade];
Nyopgave();
}

//Regneopgaver sendes til opgavefelter.
function Nyopgave(){
if (typeof Gemregneart == "undefined"){
    alert("Klik på Addition!");
    return;
}
var RA=Gemregneart;
if (typeof Gemtalomraade == "undefined"){
    alert("Vælg et talinterval!");
    return;
}
var TO=Gemtalomraade;
var TORA=RA+TO;
if(TORA=="A1")Plus1();
if(TORA=="A2")Plus2();
document.REGNEOPGAVER.RESULTAT.focus();  // Stiller cursor i felt
}

//Plusopgaver genereres.
function Plus1(){
var a=Math.round(Math.random()*10);
document.REGNEOPGAVER.TAL1.value=a;
var b=Math.round(Math.random()*10);
document.REGNEOPGAVER.TAL2.value=b;
facitgem();
}
function Plus2(){
var a=Math.round(Math.random()*20);
document.REGNEOPGAVER.TAL1.value=a;
var b=Math.round(Math.random()*20);
document.REGNEOPGAVER.TAL2.value=b;
facitgem();
}

//Facit gemmes.
facit=0;
function facitgem(){
var x=parseInt(document.REGNEOPGAVER.TAL1.value);
var y=parseInt(document.REGNEOPGAVER.TAL2.value);
if(Gemregneart=="A")
facit=x+y;
Facit=[facit];
}

var svarAry = [
  "Flot klaret!",
  "Du er bare smaddergod til at regne!",
  "Det er sådan man regner!",
"yes, du fik den!",
"Du gjorde det igen!",
"Lige præcis!",
"Hvor får du det fra, du kan bare det dér med at regne!",
"Netop, det er sådan det skal gøres!",
"Mon ikke du bliver regnelærer, når du bliver voksen!",
"Du har vist talent for at regne!",
"Rigtigt, men kan du gøre det én gang til!",   
"Kan du virkelig blive ved med at regne rigtigt?",
"Du er dygtig!",
"Rigtigt igen - er der noget du ikke kan regne?",
]

//Resultat tjekkes og svar gives.
document.REGNEOPGAVER.TJEK.onclick=Tjek;
function Tjek(){
  var Resultat=document.REGNEOPGAVER.RESULTAT.value;
  if(Resultat==""){
    window.alert("Sådan lærer du da ikke at regne!");
  } else {
    if(Facit==Resultat){
      window.alert(svarAry[parseInt(Math.random()*svarAry.length)]+" - klik OK og få et nyt regnestykke!");
      scorerigtige();
    } else {
      window.alert("Næsten rigtigt - men du får et nyt stykke!");
    }
    facit=0;
    document.REGNEOPGAVER.RESULTAT.value="";
    Nyopgave();
    optaelling();
    procent();

  }
  return false;
}

document.REGNEOPGAVER.onsubmit = function(){
  alert("submit");
  return false;
}


//Opsummering Antal opgaver
opg=0;
function optaelling(){
opg=opg+1;
OPGAVER=[opg];
if(OPGAVER==0){
document.REGNEOPGAVER.ANTALOPGAVER.value="0";}
else{
document.REGNEOPGAVER.ANTALOPGAVER.value=OPGAVER;}
opgaver2();
}


//Opsummering Antal rigtige opgaver
rig=0;
function scorerigtige(){
rig=rig+1;
RIGTIGE=[rig];
if(RIGTIGE==0){
document.REGNEOPGAVER.ANTALRIGTIGE.value="0";}
else{
document.REGNEOPGAVER.ANTALRIGTIGE.value=RIGTIGE;}
rigtige2();


}
//opsummering beregning af procent af rigte
pro=0
function procent(){
var P1=document.REGNEOPGAVER.ANTALOPGAVER.value;
var P2=document.REGNEOPGAVER.ANTALRIGTIGE.value;
pro=P2/P1*100;
pro=pro*100;
pro=Math.round(pro);
pro=pro/100;
PROCENT=[pro];
document.REGNEOPGAVER.SCOREPROCENT.value=PROCENT;
}

//Antal opgaver i alt
antalopgaver=0;
function opgaver2(){
var antalopgaver=antalopgaver+1;
Antalopgaver=[antalopgaver];
var RA=Gemregneart;
var TO=Gemtalomraade;
var TORA=RA+TO;
if(TORA=="A1")PO1();
if(TORA=="A2")PO2();
}
P1O=0;
function PO1(){
P1O=P1O+1;
var PL1O=[P1O];
if(PL1O==0){
document.REGNEOPGAVER.PLO1.value="0";}
else{
document.REGNEOPGAVER.PLO1.value=PL1O;}
}
P2O=0;
function PO2(){
P2O=P2O+1;
var PL2O=[P2O];
if(PL2O==0){
document.REGNEOPGAVER.PLO2.value="0";}
else{
document.REGNEOPGAVER.PLO2.value=PL2O;}
}

//Antal rigtige, i alt
function rigtige2(){
var RA=Gemregneart;
var TO=Gemtalomraade;
var TORA=RA+TO;
if(TORA=="A1")PR1();
if(TORA=="A2")PR2();
}
P1R=0;
function PR1(){
P1R=P1R+1;
var PL1R=[P1R];
if(PL1R==0){
document.REGNEOPGAVER.PLR1.value="0";}
else{
document.REGNEOPGAVER.PLR1.value=PL1R;}
}
P2R=0;
function PR2(){
P2R=P2R+1;
var PL2R=[P2R];
if(PL2R==0){
document.REGNEOPGAVER.PLR2.value="0";}
else{
document.REGNEOPGAVER.PLR2.value=PL2R;}
}

//Nulstil score.
document.REGNEOPGAVER.NULSTIL.onclick=nulstil;

</script>



</body>
</html>
Avatar billede slejpnir Nybegynder
22. september 2007 - 23:35 #1
PS koden fungerer da godt nok men alligevel?
Avatar billede roenving Novice
23. september 2007 - 03:21 #2
Hrm, uden at have gennemgået koden i detaljer virker den nogenlunde rimelig, men du kan klart rationalisere ved at have formularen som variabel, så document.REGNEOPGAVER erstattes med f.eks. formR !-)

-- i øvrigt kan inkrementeringer laves uhyggeligt simpelt, så

var antalopgaver=antalopgaver+1;

bliver til:

antalopgaver++;

-- bemærk også at din brug af 'var' i den slags linjer kan have stærkt uønskede virkninger, man _må_ og bør kun erklære variabler een eneste gang i et scope ...

-- i øvrigt understøtter javascript også andre simple addByValue-ting:

antalopgaver += 2;//lægger to til
antalopgaver *= 3;//ganger tallet med 3
Avatar billede slejpnir Nybegynder
26. september 2007 - 15:44 #3
okay, og tak roenving. Jeg roder videre med det. Lav lige et svar roenving så jeg kan give dig nogle point.
Avatar billede roenving Novice
27. september 2007 - 00:52 #4
Behold langt de fleste selv !-)

-- els velbekomme '-)
Avatar billede slejpnir Nybegynder
27. september 2007 - 07:39 #5
Svar
Avatar billede slejpnir Nybegynder
27. september 2007 - 07:41 #6
Håber dette er OK!
Avatar billede roenving Novice
28. september 2007 - 16:34 #7
Jeg takker for point ;}
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