Ajout 0.1 à un nombre

Eléphant du PHP | 351 Messages

21 janv. 2007, 12:55

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 ?
Modifié en dernier par bins007 le 21 janv. 2007, 13:10, modifié 1 fois.

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

21 janv. 2007, 13:01

Salut,
Le contenu renvoyé par innerHTML est du type String tu dois donc convertir... jette un oeil à parseFloat()

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 351 Messages

21 janv. 2007, 13:09

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

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

21 janv. 2007, 13:55

je ne comprend pas ton EDIT :-k

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);

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 351 Messages

21 janv. 2007, 14:30

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 !

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

21 janv. 2007, 15:56

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. :-k

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 351 Messages

21 janv. 2007, 16:43

Ah c'est exactement ce qu'il me faut !

Merci beaucoup