Très lent [Résolu]

Signaler
Messages postés
13
Date d'inscription
mardi 8 juillet 2008
Statut
Membre
Dernière intervention
24 juillet 2008
-
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
-
Bonjour à tous!!
J'ai un script sympa pour des élèves mais malheureusement il est super long à tourner ,quand il ne bugge pas!
Serait-il possible de le raccourcir ou le modifer pour qu'il tourne normalement?
<script language="JavaScript">;
<!--


lettre="";
 
mots= new Array(8);
i=0
 while(i<8)
  {
 mots[i]=""
 i++
  }
numeroquestion =0;


bonnereponse="";
score=0
points=0




question= new Array (23);
 i=0
 while(i<23)
  {
 question[i]=""
 i++
  }


function lirequestions()
{
question[1]="4 x 1 000,4 000"
question[2]="17 x 100,1 700"
question[3]="2.46 x 100,246"
question[4]="10 000 x 0.045,450"
question[5]="0.4 x 100,40"
question[6]="1 000 x 4.35,4 350"
question[7]="0. 007 x 100,0.7"
question[8]="4.5 x 100,450"
question[9]="100 x 0.047,4.7"
question[10]="0.0891 x 1 000,89.1"
question[11]="0.28 x 100 000,28 000"
question[12]="1 000 000 x 0.00321,3 210"
question[13]="100 x 2.1,210"
question[14]="0.791 x 10,7.91"
question[15]="10 000 x 350,3 500 000"
question[16]="1000 x 0.0792,79.2"
question[17]="1 000 x 0.07,70"
question[18]="14.18 x 1 000,14 180"
question[19]="0.046 x 100 000,4 600"
question[20]="10 000 x 2 500,25 000 000"




nombredequestions=20
}


 


function debut(){    
    lirequestions()
    brasser(nombredequestions)
    numeroquestion=0
    
    score=0
    
    
    nouvellequestion()
    }
function nouvellequestion() {    
    numeroquestion++
    essai=1
    points=1
    
    coupechaine(question[numeroquestion])
    laquestion=mots[0]
    bonnereponse=mots[1]
    
    affichequestion()
    
    document.forms[0].mareponse.value=("");
    
    
    }
    
    
function affichequestion() 
 {
 
  if (numeroquestion>"10") {
   fin();
   }
   else {
 
 
 
 
 
 document.forms[0].elements[0].value=(numeroquestion);
 document.forms[0].elements[6].value=(essai+"/2");
 document.forms[0].elements[7].value=(points);
 
 document.forms[0].elements[8].value=(score);
 
 document.forms[0].laquest.value=laquestion
 
 document.forms[0].mareponse.focus()
 
 if(essai==1) {document.bgColor="#E0FDFE"}
 if(essai==2) {document.bgColor="FFA346"}
 
 }
 }


 
function brasser(nq) {
 
 
 
 var k=0
 var j=0
 var i=0
 
 while(i<nq+10) {
  
  i++
  j=Math.round((Math.random()*(nq-1))+1)
  k=Math.round((Math.random()*(nq-1))+1)
  
  question[0]=question[k]
  
  question[k]=question[j]
  
  question[j]=question[0]
  
  
  }
 } 


 


 


 
 


function coupechaine (vb)  
 {
 
 k=0;
  while (k<7){
  mots[k]="";
  k=k+1;
     }
  
  j=0
  i=0
  
  while (i<vb.length+1) {
  
  
  lettre=vb.substring(i,i+1);
  
  if (lettre!=",") {
  mots[j]=mots[j]+lettre;
 
  
  
  i=i+1;
  }
  else {
  
  j=j+1;
  i=i+1
  }   }
     
 }




function changement() {
 
 alert("Utilise la case de réponse !");
  affichequestion()
 }  




function correction() {
 
 if(document.forms[0].mareponse.value == bonnereponse) 
  {
  message="Tu gagnes "+ points+ " points"
  if(points<0)
   {
   message="Tu gagnes 1 point"
   }
  alert(message)
  score=score+points
  nouvellequestion()
  }
 else {
  
 essai=essai+1
   
   if(essai>2) {
    alert("La bonne réponse est : "+bonnereponse+"")
    nouvellequestion()
      }
   else {
    message="Essaie encore !"
    
    if(essai>1) {
    message="Deuxième chance !"
      }
    alert(message)
    
    points=points-0.5
    verification(document.forms[0].mareponse.value)
    document.forms[0].mareponse.value=motverifier
    affichequestion()
    }
    }
    }


function verification (tentative)
 {
 t=-1
 motverifier=""
 while (t<tentative.length+1)
   {
  t=t+1
  lettre=tentative.substring(t,t+1);
    if (lettre == bonnereponse.substring(t,t+1))
    {
    motverifier=motverifier+lettre
    }
    
    else {
    break
    }
   } 


  }


  
  


function fin()
  {
 {if(score==10)alert("Très bien !\nAucune faute!\nClique sur Sommaire !")


else if(score==9)alert("Bien !\nUne étourderie sans doute.\nClique sur Sommaire !")
else if(score<9)alert("Il est préférable de recommencer cet exercice.");recommencer();
}
 
 
 }
function recommencer()
{debut();


}


 


function sommaire()
 {
   window.open("../../index.html",'_self')
   }




-->
</script>

Merci!!!!!!

9 réponses

Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
33
Salut,

j'ai pas vraiment regardé mais je peus déja te dire qu'il serai mieux de changer :

langage='javascript'

en :

type='text/javascript'

Après j'ai vu que la déclaration des variables est mal faite : tu déclare la variable en lui assignant une valeur, ce n'est pas une façon de faire, on déclare une variable comme ça :

var variable = "valeur";

J'ai également remarqué que tu ne mettait pas de point virgule a la fin de chaque instruction donc code a revoir de tout les cotés, et surtout débug, regarde dans la console d'erreur de firefox et utilise firebug !

a++

Si la réponse vous convient, pensez : Réponse acceptée !
Messages postés
13
Date d'inscription
mardi 8 juillet 2008
Statut
Membre
Dernière intervention
24 juillet 2008

ok merci pour tes conseils
à +
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
33
ok,

je regarderai ton code plus en profondeur tout a l'heure !

a++

Si la réponse vous convient, pensez : Réponse acceptée !
Messages postés
13
Date d'inscription
mardi 8 juillet 2008
Statut
Membre
Dernière intervention
24 juillet 2008

C'est bon,ca s'est arrangé.
Je voudrais rajouter une minuterie dont le script est:
<HTLML>
<HEAD>
<script language="JavaScript">
var dix= 0
var sc= 00 //
var mn= 2 // On peut changer ici la valeur en mn ou en sc
function chrono()
{
dix--;
if (dix<0) {dix=9;sc--}
if (sc<0) {sc=59;mn--}
time=mn+" mn "+sc+" s "+dix;
document.forme.champ1.value=time;
if (mn==0 & sc==0 & dix==0)
{alert('Le temps imparti est terminé !')}
décompte= setTimeout('chrono()', 100);}
function zéro()
{clearTimeout(décompte)
dix= 0;
sc=00;
mn= 2;
time=mn+" mn "+sc+" s "+dix;
document.forme.champ1.value=time;
}
</script>
</HEAD>

<form name="forme">




</form>

</HTML>

Malheureusement, lorsque je l'insere dans mon script, soit je ne peux plus faire les calculs soit la minuterie ne se met pas en route.
Comment dois-je l'insérer pour que cela fonctionne normalement?
(et où ?!)
Merci
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
33
j'ai pas bien compris ce que tu veus faire, peus tu mieux m'expliquer ?

a++

Si la réponse vous convient, pensez : Réponse acceptée !
Messages postés
13
Date d'inscription
mardi 8 juillet 2008
Statut
Membre
Dernière intervention
24 juillet 2008

non c'est bon excuse moi
J'avais simplement un souci de clavier!!
Salut
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
33
ok,

Par contre, peus tu nous dire ce qui ralentissait ton script et surtout mettre les réponses qui t'ont aidés en réponse acceptée !

Petite question personnelle : Tu est prof ?

J'ai 14 ans lol !

a++

Si la réponse vous convient, pensez : Réponse acceptée !
Messages postés
13
Date d'inscription
mardi 8 juillet 2008
Statut
Membre
Dernière intervention
24 juillet 2008

Oui je suis prof de mathématiques.
Par contre,je n'ai pas trouvé la cause de ce ralentissement.
En ouvrant avec Internet explorer plutot que le navigateur orange,le problème ne s'est plus posé!!
A +
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
33
ok,

Dans ce cas met toi en réponse acceptée !

a++

Si la réponse vous convient, pensez : Réponse acceptée !