Explorateur firefox qui tourne à vide! [Résolu]

Signaler
Messages postés
194
Date d'inscription
lundi 11 juillet 2005
Statut
Membre
Dernière intervention
13 avril 2007
-
Messages postés
194
Date d'inscription
lundi 11 juillet 2005
Statut
Membre
Dernière intervention
13 avril 2007
-
Salut à vous!
Savez vous résoudre mon pb n°1 explicité ici : http://www.javascriptfr.com/forum.v2.aspx?ID=535348
-Mon explorateur firefox tourne à vide à chaque fois que je lance cette fonction.
-Et d'ailleurs si j'enlève la ligne document.write(valeur) je n'ai plus aucun résultat.
2 points super bizarres...

Comme j'ai accepté la réponse pour mon pb n°2 me suis dit que vous n'iriez plus voir, je me permets de remettre une annonce comme je n'ai toujours pas trouvé de réponse!!

Je vous remercie d'avance!
Jo

6 réponses

Messages postés
289
Date d'inscription
vendredi 11 mars 2005
Statut
Membre
Dernière intervention
3 avril 2008
3
Salut!

J'ai fait quelques modifications. J'ai remplacer la boucle php par une bouble js. Si tu préfère en php, ça ne dérenge en rien la fonctionnalité.


<html>
<head>
<title>Untitled</title>
</head>

----

width=
"134"
height=
"51"
class=
"StyleEtiquette">Nb. de personnes*
,

&nbsp;
<select name=
"Nbre_personne" size=
"1" id=
"nb_pers" onChange=
"mafonction(this.value)">
<option selected=
"selected" value=
"0">...choisir</option>

<script language="JavaScript">

var nbre_voiture_total
=5;

var nbre_place
=3;

var nbre_personne_max
= nbre_voiture_total
* nbre_place;

for(t
=2;t
<nbre_personne_max;t
++)
{

if(t
<=nbre_personne_max
)
{
document
.write
('
<option value
="'+t+'">'
+t
+'
</option
>'
);

}

}

</script>
</select>

<script language="JavaScript">

function mafonction
(valeur
)
{
selAuto
= document
.getElementById
("nb_voiture");
selAuto
.length
=
1;
nbre_personne
=eval
(valeur
);
//Les voitures accueillent jusqu'à 3 places.

if(nbre_personne
<= nbre_personne_max
&& nbre_personne
>
0)
{
min_auto
= Math
.round
((nbre_personne
+nbre_personne
%nbre_place
)/nbre_place
);
max_auto
= Math
.floor
(nbre_personne
/2);

for
(var i
= min_auto
, j
=0; i
<= max_auto ; i
++,j
++)

{
elOp
= document
.createElement
("option");
elOp
.innerHTML
= i;
elOp
.value
= i;
selAuto
.appendChild
(elOp
);

}

}

}

</script>

, width=
\"224\"
class=
\"StyleEtiquette\"
align=
\"left\">Nb. de voiture(s)*
<select name=
\"Nombre_voiture\" size=
\"1\" id=
\"nb_voiture\">
<option selected=
\"selected\">...choisir</option>
</select>
</td>

</html>

A+, Ghislain
Messages postés
289
Date d'inscription
vendredi 11 mars 2005
Statut
Membre
Dernière intervention
3 avril 2008
3
Salut!

Le problème c'est que tu utilises un document.write après que la page soit terminé de chargé. C.a.d. que tu reset la page en fesant celà. Si tu ne fait que des tests, affiche tes résultat dans des alert("message : "+qqchose);

Sinon, utilise des divs pour afficher le contenu a l'écran.

var monDiv = document.createElement("div");
monDiv.innerHTML = "mon message : " + qqchose;
document.body.appendChild(monDiv);

Y'a d'autre solution, mais ça dépend ce que tu veux faire...

A+, Ghislain
Messages postés
194
Date d'inscription
lundi 11 juillet 2005
Statut
Membre
Dernière intervention
13 avril 2007

en fait je veux qu'une fois le client choisit le nbre de personne dans un menu déroulant, que 'mafonction' JS me calcule directement les différentes nombres de voiture à proposer (valeurs contenues dans mon tableau affichage_voiture) sans changer de page internet.
Et je suis dessus depuis qq jours, je suis débutant et je galère comme un fou lol.

Voilà mon code de mon body le tout étant dans un seul <form>

<td width="134" height="51" class="StyleEtiquette">Nb. de personnes*</td>
<td>&nbsp;
<select name="Nbre_personne" size="1" id="nb_pers" onChange="mafonction(this.value)">
<option selected="selected" >...choisir</option>
<?php
$nbre_voiture_total=5;
for($t=2;$t<3*$nbre_voiture_total;$t++) {
if($t<=3*$nbre_voiture_total) {
echo '<option value='.$t.'>'.$t.'</option>';
}
}
?>
</select>

<script language="JavaScript">
function mafonction(valeur) {
nbre_personne=valeur;
nbre_voiture_total=5;
//Les voitures accueillent jusqu'à 3 places.
nbre_place=3;
nbre_personne_max=nbre_voiture_total*nbre_place;
if(nbre_personne <= nbre_personne_max) {
nbre_personne=nbre_personne/2;
entier_inferieur=Math.floor(nbre_personne);
affichage_voiture = new Array();
affichage_voiture[0]=entier_inferieur;
i=1;
//1er cas : Si $nre_personne/2 est un nombre entier alors entier_inferieur=nbre_personne
if(entier_inferieur == nbre_personne) {
while(nbre_personne >= nbre_place) {
nbre_personne=nbre_personne-nbre_place;
affichage_voiture[i]=affichage_voiture[i-1]-1;
i++;
}
}
//2eme cas : Sinon c'est un nbre à virgule
else {
while(entier_inferieur > nbre_place) {
entier_inferieur=entier_inferieur-nbre_place;
affichage_voiture[i]=affichage_voiture[i-1]-1;
i++;
}
}
affichage_voiture=affichage_voiture.sort();
}
}
</script>
<td width="224" class="StyleEtiquette" align="left">Nb. de voiture(s)*
<select name="Nombre_voiture" size="1" id="nb_voiture">
<option selected="selected">...choisir</option>
<script language="JavaScript">
for(t=0;t'+affichage_voiture[t]+'</option>');
}
</script>


</select></td>
</tr>

Voilà si tu peux m'aider, tu serais trop cool!!!!
Merci.
Messages postés
194
Date d'inscription
lundi 11 juillet 2005
Statut
Membre
Dernière intervention
13 avril 2007

Yeahhh Ghislain!
Je viens de voir ton message et de voir si ça marche...
Mais tu es un OUFFFFFF, t'as capté tout ce que je voulais et tout!!!
Je voulais te remercier d'avoir réfléchit dessus, c'est trop cool, tu peux pas savoir comment j'ai galéré!!!!!!!!!!!!!!!
Merci infiniement, tu me sauves une fois de plus!
Je vais plancher sur ton code dès la première heure demain!
Merci encore t un vrai ;) !
Dieu te le rendra en centuple! (pas croyant mais bon...tu m'as compris)
Bonne fin de wk à toi !

Jod
Messages postés
289
Date d'inscription
vendredi 11 mars 2005
Statut
Membre
Dernière intervention
3 avril 2008
3
Salut!

Ce fût un plaisir de t'aider!!!

Juste pour te dire de ne pas tenir compte de la variable j dans la deuxième boucle for. Elle ne sert a rien, c'étais utilisé lors mes tests.

Donc :
for
(var i
= min_auto
; i
<= max_auto ; i
++)
au lieu de
for (var i = min_auto, j=0; i <= max_auto ; i++,j++)

A+, Ghislain
Messages postés
194
Date d'inscription
lundi 11 juillet 2005
Statut
Membre
Dernière intervention
13 avril 2007

Yes merci j'avais vu, j'ai pas tout capté à ton code mais ça j'avais vu. lol

Merci de ta gentillesse encore une fois!

:)



Jo