IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Incrémentation simple Javascript.


Sujet :

JavaScript

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 7
    Par défaut Incrémentation simple Javascript.
    Voilà le code Javascript qui fait un calcul sur chaque ligne du tableau généré par le code php.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    <script language="Javascript">
    	function calculPrix() 
    	{
    	for (var Nb=0;Nb<=100;Nb++)
    		{ 
    		var QTE = document.getElementById("quantite"+Nb ).value; 
    		var PU_HT = document.getElementById("prix_unitaire_ht"+Nb ).value; 
     
    	if( QTE !="" && PU_HT !="" )
    	{ 
    	var TOTAL = document.getElementById("total_ht"+Nb ).value = (QTE * PU_HT).toFixed (2); 
    	return TOTAL;
    	} 
    		}
    	}	
    		</script>
    Le code PHP :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    <table id="table" align="center" BORDER="1" onchange="verifPrix()">
    							<tr align="center">
    								<th>Description</th><th>Qt&eacute;</th><th>Prix Unitaire H.T</th><th>Total H.T</th>
    							</tr>
     
    						<?php
                                                            for($compteur=0; $compteur<=$NbArt-1; $compteur++)
                                                                    {
                                                                    echo    '<tr>
                                                                                    <td><TEXTAREA name="description'.$compteur.'" id="description'.$compteur.'" rows=1 cols=40 ></TEXTAREA></td>
                                                                                    <td><INPUT type="text" id="quantite'.$compteur.'" name="quantite'.$compteur.'" size="5" onchange="calculPrix()"></td>
                                                                                    <td><INPUT type="text" id="prix_unitaire_ht'.$compteur.'" name="prix_unitaire_ht'.$compteur.'" size="8" onchange="calculPrix()"></td>
                                                                                    <td><INPUT type="text" id="total_ht'.$compteur.'" name="total_ht'.$compteur.'" size="8" onchange="calculPrix()"></td>
                                                                                    </tr>';
                                                                    }
                                                    ?>
    							<tr>
    								<td colspan="2" rowspan="4"></td>
    								<td align="right"><strong>H.T</strong></td>
    								<td><INPUT type="text" id="TotalHT" name="TotalHT" size="8" ></td>
    							</tr>
    							<tr>
    								<td align="right"><strong>T.V.A 19,6%</strong></td>
    								<td><INPUT type="text" name="nom" size="8"></td>
    							</tr>
    							<tr>
    								<td align="right"><strong>PORT</strong></td>
    								<td><INPUT type="text" name="nom" size="8"></td>
    							</tr>
    							<tr>
    								<td align="right"><strong>TOTAL TTC</strong></td>
    								<td><INPUT type="text" name="nom" size="8"></td>
    							</tr>
    						</table>
    Le problème c'est qu'il fait le calcul que sur la première ligne ou sinon si on commence par la dernière ligne et qu'on remonte jusqu’à la première sa marche. Mais si je remplie ligne par ligne a partir du début il ne fait le calcul que sur la première ligne... POURQUOI ?

    Merci a tous ceux qui essaye de comprendre !

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Bonsoir.

    Montre nous le code html généré mais pas le code php. Il se peut que l'élément appeler dans document.getElementById() n'existe pas. Perso, je génère les bornes de la boucle for depuis php avec la valeur max de ton compteur $NbArt.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for (var Nb=0;Nb<=100;Nb++)
    		{
    if(document.getElementById("quantite"+Nb ) && document.getElementById("prix_unitaire_ht"+Nb )){ 
    var QTE = document.getElementById("quantite"+Nb ).value; 
    		var PU_HT = document.getElementById("prix_unitaire_ht"+Nb ).value; 
     ...........
    A+.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 7
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
     
    <table id="table" align="center" BORDER="1" onchange="verifPrix()">
     
    							<tr align="center">
     
    								<th>Description</th><th>Qt&eacute;</th><th>Prix Unitaire H.T</th><th>Total H.T</th>
     
    							</tr>
     
     
     
    						<tr>
     
    										<td><TEXTAREA name="description0" id="description0" rows=1 cols=40 ></TEXTAREA></td>
     
    										<td><INPUT type="text" id="quantite0" name="quantite0" size="5" onchange="calculPrix()"></td>
     
    										<td><INPUT type="text" id="prix_unitaire_ht0" name="prix_unitaire_ht0" size="8" onchange="calculPrix()"></td>
     
    										<td><INPUT type="text" id="total_ht0" name="total_ht0" size="8" onchange="calculPrix()"></td>
     
    										</tr><tr>
     
    										<td><TEXTAREA name="description1" id="description1" rows=1 cols=40 ></TEXTAREA></td>
     
    										<td><INPUT type="text" id="quantite1" name="quantite1" size="5" onchange="calculPrix()"></td>
     
    										<td><INPUT type="text" id="prix_unitaire_ht1" name="prix_unitaire_ht1" size="8" onchange="calculPrix()"></td>
     
    										<td><INPUT type="text" id="total_ht1" name="total_ht1" size="8" onchange="calculPrix()"></td>
     
    										</tr><tr>
     
    										<td><TEXTAREA name="description2" id="description2" rows=1 cols=40 ></TEXTAREA></td>
     
    										<td><INPUT type="text" id="quantite2" name="quantite2" size="5" onchange="calculPrix()"></td>
     
    										<td><INPUT type="text" id="prix_unitaire_ht2" name="prix_unitaire_ht2" size="8" onchange="calculPrix()"></td>
     
    										<td><INPUT type="text" id="total_ht2" name="total_ht2" size="8" onchange="calculPrix()"></td>
     
    										</tr>							<tr>
     
    								<td colspan="2" rowspan="4"></td>
     
    								<td align="right"><strong>H.T</strong></td>
     
    								<td><INPUT type="text" id="TotalHT" name="TotalHT" size="8" ></td>
     
    							</tr>
     
    							<tr>
     
    								<td align="right"><strong>T.V.A 19,6%</strong></td>
     
    								<td><INPUT type="text" name="nom" size="8"></td>
     
    							</tr>
     
    							<tr>
     
    								<td align="right"><strong>PORT</strong></td>
     
    								<td><INPUT type="text" name="nom" size="8"></td>
     
    							</tr>
     
    							<tr>
     
    								<td align="right"><strong>TOTAL TTC</strong></td>
     
    								<td><INPUT type="text" name="nom" size="8"></td>
     
    							</tr>
     
    						</table>

  4. #4
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    As-tu essayé mon code
    As-tu pris en compte mes remarques
    <script language="Javascript">
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <script type="text/javascript">
    A+.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 7
    Par défaut
    Je dois avouer que j'ai pas vraiment compris.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    		<script type="text/javascript">
     
    			function calculPrix() 
     
    			{
     
    				for (var Nb=0;Nb<=100;Nb++)
     
    					{ 
     
    					if(document.getElementById("quantite"+Nb ) && document.getElementById("prix_unitaire_ht"+Nb ))
     
    					{ 
     
    						var QTE = document.getElementById("quantite"+Nb ).value; 
     
    						var PU_HT = document.getElementById("prix_unitaire_ht"+Nb ).value; 
     
    						if( QTE !="" && PU_HT !="" )
     
    							{ 
     
    							var TOTAL = document.getElementById("total_ht"+Nb ).value = (QTE * PU_HT).toFixed (2); 
     
    							return TOTAL;
     
    							} 
     
    					}
     
    					}
     
    			}	
     
    		</script>

  6. #6
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    1- avec mon code, on vérifie d'abord si l'élément appeler avec getElementById existe. Avec ton code, tu ne testes pas or que l'élément n'éxiste pas quand NB > 2 , ainsi tu as des erreurs.

    2- Si tu génères la valeur à la place 100 dans la boucle for avec la valeur de $NbArt, le nombre d'itération pourrait être réduite ou augmenté selon le cas et c'est plus sûre.

    A+.

  7. #7
    Membre Expert
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Par défaut
    Salut,

    C'est à cause du Essaie comme ceci...

    Code js : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    <script type="text/javascript">
    function calculPrix(){
    	var Nb,QTE,PU_HT;
    	for(Nb=0;Nb<=100;Nb++){
    		if(document.getElementById("quantite"+Nb ) && document.getElementById("prix_unitaire_ht"+Nb )){
    			QTE = document.getElementById("quantite"+Nb ).value;
    			PU_HT = document.getElementById("prix_unitaire_ht"+Nb ).value;
    			if(QTE !="" && PU_HT !=""){
    				document.getElementById("total_ht"+Nb ).value = (QTE * PU_HT).toFixed(2);
    			}
    		}
    	}
    }
    </script>

    ou mieux, ne traiter que la ligne concernée par la modification. Dans ce cas, le No de ligne est passé en paramètre comme ceci :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '... onchange="calculPrix('.$compteur.')" ...'

    et la fonction JS deviendrait :
    Code js : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <script type="text/javascript">
    function calculPrix(Nb){
    	var QTE,PU_HT;
    	if(document.getElementById("quantite"+Nb ) && document.getElementById("prix_unitaire_ht"+Nb )){
    		QTE = document.getElementById("quantite"+Nb ).value;
    		PU_HT = document.getElementById("prix_unitaire_ht"+Nb ).value;
    		if(QTE !="" && PU_HT !=""){
    			document.getElementById("total_ht"+Nb ).value = (QTE * PU_HT).toFixed(2);
    		}
    	}
    }
    </script>

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 7
    Par défaut
    Merci a vous deux, vous m'avez été d'une grande aide !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Simple javascript slideshow
    Par haylox dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 14/04/2013, 14h32
  2. [MooTools] Code simple javascript avec mootools
    Par aladin83 dans le forum Bibliothèques & Frameworks
    Réponses: 1
    Dernier message: 18/10/2010, 07h34
  3. [AC-2003] Décrémentation multiple suivi d'une incrémentation simple
    Par Invité dans le forum Access
    Réponses: 4
    Dernier message: 05/08/2010, 14h30
  4. syntaxe simple javascript
    Par nicerico dans le forum Général JavaScript
    Réponses: 18
    Dernier message: 01/06/2007, 11h15
  5. [javascript]pb d'incrémentation
    Par cisse18 dans le forum Général JavaScript
    Réponses: 17
    Dernier message: 14/03/2006, 16h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo