Comment additionner les valeurs d'input?

Comment additionner les valeurs d'input? - HTML/CSS - Programmation

Marsh Posté le 21-10-2013 à 16:44:23    

Bonjour à tous,
 
J'ai un petit souci pour additionner des valeurs d'inputs.
Concrètement, j'ai des inputs avec des "id" comme ceci: prix_1, prix_2, prix_3...
 
Comment puis-je lancer une recherche sur tous les id commençant par "prix_"?
 
merci d'avance pour votre aide!

Reply

Marsh Posté le 21-10-2013 à 16:44:23   

Reply

Marsh Posté le 21-10-2013 à 16:55:14    

Par javascript?  
 
i = 1;
while (document.getElementById('prix_'+i)) {
tab_prix[i-1] = document.getElementById('prix_'+i).value;
i++;
}

Reply

Marsh Posté le 21-10-2013 à 17:05:25    

Oui par javascript.
Ok je comprends.
Mais si mes id commencent par "prix_" et sont suivis de l'id du produit (donc par ex: "prix_234", "prix_1873"...), cela ne va pas poser problème? Ou du moins trop ralentir s'il passe par tous les nombres?

Reply

Marsh Posté le 21-10-2013 à 17:28:53    

utiliser une librairie (mootools, jquery, prototype), mettre une classe prix à tous tes inputs et passer par un selecteur :
http://mootools.net/docs/core/Elem [...] ow:dollars

Code :
  1. total = 0;
  2. $$('input.prix').each(function(DOM, index) {
  3.   total += Number(DOM.value);
  4. });


Message édité par mechkurt le 21-10-2013 à 17:29:13

---------------
D3
Reply

Marsh Posté le 21-10-2013 à 18:59:23    

Euh pas besoin de bibliothèque pour faire ça, si tes id ne se suivent pas, comme dit, ajoute une class="prix" à tes balises puis en javascript :
 

Code :
  1. i = 0;
  2. while (document.getElementsByClassName('prix')[i]) {
  3. tab_prix[i] = document.getElementsByClassName('prix')[i].value;
  4. i++;
  5. }


 
Bon par contre en effet ça ne marchera pas sur les vieilles versions de IE.

Reply

Marsh Posté le 22-10-2013 à 08:06:55    

MaybeEijOrNot a écrit :

Euh pas besoin de bibliothèque pour faire ça, si tes id ne se suivent pas, comme dit, ajoute une class="prix" à tes balises puis en javascript :
 

Code :
  1. i = 0;
  2. while (document.getElementsByClassName('prix')[i]) {
  3. tab_prix[i] = document.getElementsByClassName('prix')[i].value;
  4. i++;
  5. }


 
Bon par contre en effet ça ne marchera pas sur les vieilles versions de IE.


S'il te plaît arrête à tout prix de répéter les getElementsByClassName dans les boucles, tu pourris les perfs en faisant ainsi.
 
Et un for aurait été largement  plus utile qu'un while

Code :
  1. var tab_prix=[],;
  2. var prices = document.getElementsByClassName('prix');
  3. for(var i=0; i<prices.length; i++) {
  4.    tab_prix.push(prices[i]);
  5. }


---------------
Blablaté par Harko
Reply

Marsh Posté le 22-10-2013 à 09:48:49    

Oui c'est que j'ai repris bêtement mon code de départ dans lequel on n'avait pas le choix.
Mais bon ça diminuera toujours moins les perfs que d'importer une bibliothèque. :D

Reply

Marsh Posté le 22-10-2013 à 09:54:28    

http://mootools.net/core/7057b1724 [...] 7f1f839362
Passer par une librairie de 49 ko est à mon avis beaucoup plus simple à appréhender pour un débutant en javascript (en tout cas c'est mon cas), après y'a pas de solutions meilleur que d'autres...


---------------
D3
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed