Forums d'assistance et de discussion sur les logiciels produits par Mozilla ou créés à partir des technologies Mozilla. Ce site ne dépend pas de la fondation Mozilla et est maintenu par un collectif de bénévoles.
HTML5, CSS3, Javascript, support des mobiles... Que penser de votre site ? Vous manquez d'informations pour la construction d'un site qui puisse s'afficher correctement partout ? C'est un problème simple, un peu complexe ? Venez ici !
function majvaleurs(nbreprod)
{
var total;
for (var i=1; i<nbreprod; i++)
{
total += document.getElementById(i).value;
}
document.getElementById('total').value = total;
}
Erreur : invalid assignment left-hand side
Moi pas comprendre... += existe pas? le .value ne renvoie pas un nombre?
Dernière modification par DJiK le 23 juin 2004, 12:01, modifié 1 fois.
function majvaleurs(nbreprod)
{
var total = 0;
for (var i=1; i<nbreprod; i++)
{
total += parseInt(document.getElementById(i).value);
}
document.getElementById('total').value = total;
}
C'est incroyable, m^ avec ParseInt il continue d'ajouter les chiffres à la queue-leuleu au lieu de les ajouter!
Bobe a écrit :tes attributs id dans le document ne contiennent qu'un chiffre. Un identifiant ne peut commencer par un chiffre.
J'ai essayé, mais je suis pas arrivé à faire des lettres + le chiffre en Javascript!
Maintenant que je sais comment ajouter du texte, je devrais corriger ça!
Merci pour votre aide en tout cas, j'espère qu'on finira par y arriver!
function majvaleurs(nbreprod)
{
var total='';
for (var i=1; i<nbreprod; i++)
{
var indice = 'soustotal' + i;
if (document.getElementById(indice).value != '')
total += parseFloat(document.getElementById(indice).value);
}
alert(total); /* pour vérifier. */
}
Oui ce sont des float mais ça fait pareil! Résultat: 1.1 + 2.2 = 1.12.2
Pour éviter le parseFloat, il suffit tout simplement d'initialiser total à zéro (valeur numérique) et non à une chaîne vide (sinon il devient une chaîne forcément et ce que tu lui ajoute s'ajoute sous forme de chaîne également).
total = total + 0.0 + document.getElementById(i).value;
C'est bien le type initial de total et seulement lui qui sera pris en compte pour déterminer le résultat de l'opérateur "+" (qui comme vous le savez sans doute fonctionne de gauche à droite), ici la concaténation.
Pour preuve, il suffit d'entrer dans la console JavaScript :
On a ici l'addition qui se fait correctement entre les deux nombres (types compatibles), et ensuite au moment d'ajouter un string, l'interpréteur voit que le type n'est pas compatible et réalise alors une simple concaténation (et je m'étais trompé je pensais qu'il ferait la conversion dans l'autre sens).
total = total + 0.0 + document.getElementById(i).value;
C'est bien le type initial de total et seulement lui qui sera pris en compte pour déterminer le résultat de l'opérateur "+" (qui comme vous le savez sans doute fonctionne de gauche à droite), ici la concaténation.
Ah oui, c'est juste, le type initial de total fait voler en éclat ma proposition, mais en général, ca fonctionne avec cette astuce