Page 1 sur 1
Ajout 0.1 à un nombre
Posté : 21 janv. 2007, 12:55
par bins007
Bonjour,
J'ai un probleme que je ne comprend pas du tout, je souhaite que toute les 0.1 secondes, le nombre d'un div augmente de 0.1
Voilà le code :
Code : Tout sélectionner
function faire_time()
{
var n = new Number(document.getElementById("div_time").innerHTML);
var n = n + 0.1;
document.getElementById("div_time").innerHTML = n;
}
setInterval("faire_time()",100);
Mais ça m'affiche des nombres du genre : 9.199999999999983
Comment ça se fait ?
Posté : 21 janv. 2007, 13:01
par Truc
Salut,
Le contenu renvoyé par innerHTML est du type String tu dois donc convertir... jette un oeil à parseFloat()
Posté : 21 janv. 2007, 13:09
par bins007
Merci je comprend déjà mieux le probleme, j'ai vu du côté de parseFloat() mais apparement faut pas utiliser ça :
j'ai essayé :
Code : Tout sélectionner
function faire_time()
{
var n = new Number(document.getElementById("div_time").innerHTML);
var n = n + 0.1;
document.getElementById("div_time").innerHTML = parseFloat(n);
}
et
Code : Tout sélectionner
function faire_time()
{
var n = new Number(document.getElementById("div_time").innerHTML);
var n = parseFloat(n + 0.1);
document.getElementById("div_time").innerHTML = n;
}
Aucun des deux ne fonctionne
EDIT : en fait j'avais rien compris, le probleme ne vient pas du contenu du innerHTML car j'ai même essayé :
Code : Tout sélectionner
<script language="JavaScript">
n = new Number(0);
function faire_time()
{
n = n + 0.1;
document.getElementById('div_time').innerHTML = n;
}
setInterval("faire_time()",100);
</script>
Toujours le même probleme
Posté : 21 janv. 2007, 13:55
par Truc
je ne comprend pas ton EDIT
Essaie comme ça :
function faire_time()
{
var n = document.getElementById("div_time").innerHTML;
n = parseFloat(n)+ 0.1;
document.getElementById("div_time").innerHTML = n;
}
setInterval("faire_time()",100);
Posté : 21 janv. 2007, 14:30
par bins007
Non ça ne fonctionne pas,
Apres avoir testé plusieurs truc, j'explique dans mon EDIT que c'est pas le probleme avec innerHTML vu que j'ai essayé le code suivant :
Code : Tout sélectionner
<script language="JavaScript">
n = new Number(0);
function faire_time()
{
n = n + 0.1;
document.getElementById('div_time').innerHTML = n;
}
setInterval("faire_time()",100);
</script>
Donc là c'est sans récupérer la valeur du innerHTML et ça marche toujours pas !
Le probleme n'est pas de là donc !
Posté : 21 janv. 2007, 15:56
par Truc
Tu veux formater (=arrondir) le chiffre ?
trouvé sur le net :
function arrondi(nombre, chiffre)
{
virgule=Math.pow(10,chiffre);
valeur_arrondi=(Math.round(nombre*virgule))/virgule;
return (valeur_arrondi);
}
function faire_time()
{
var n = document.getElementById("div_time").innerHTML;
n =parseFloat(n)+ 0.1;
n = arrondi(n, 2)
document.getElementById("div_time").innerHTML = n;
}
Je ne connais pas de fonction JS pour le faire sans devoir écrire une fonction maison.

Posté : 21 janv. 2007, 16:43
par bins007
Ah c'est exactement ce qu'il me faut !
Merci beaucoup