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 :

Calcul dans un formulaire


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Coordinateur Back-Office
    Inscrit en
    Avril 2019
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Coordinateur Back-Office
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2019
    Messages : 34
    Par défaut Calcul dans un formulaire
    Bonjour,

    je débute et suis bloqué sur un point pour un fichier html / js

    Je souhaite récupérer depuis un input une valeur et faire un calcul dont le résultat s'affichera dans un autre champ après clic sur un bouton.

    Mon problème c'est que mon code semble ne rien calculer et mes champs s'effacent alors qu'il ne faudrait pas...

    Pourriez-vous jeter un oeil et me faire part de vos commentaires et conseils?

    Merci d'avance

    Code html : 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
    <form id="Formulaire">
    Nom et prénom: <input id="Nom_Prénom" type="text" size="30px"><br><br>
    Prix de l'appareil: <input name="valeurTTC" type="text" size="15px">
    <button onclick="CALCUL_FRANCHISE()">Calculer</button>
    <button onclick="window.print()">Impression</button>
    <input class="styled" type="reset" value="Effacer" Align="left"><br>
    </form>
    <p>franchise 70 <span id="Franchise70"></span></p>
    <p>franchise 60 <span id="Franchise60"></span></p>
    <p>franchise 50 <span id="Franchise50"></span></p>
    <p>franchise 40 <span id="Franchise40"></span></p>
    <p>franchise 20 <span id="Franchise20"></span></p>
    </p>
     
     
    <script type="text/javascript">
    function CALCUL_FRANCHISE()
    {
    var F70=document.getElementbyId("Formulaire").element["valeurTTC"].value)*0,70;
    document.getElementbyId("Franchise70").innerHTML=F70;
    var F60=document.getElementbyId("Formulaire").element["valeurTTC"].value)*0,60;
    document.getElementbyId("Franchise60").innerHTML=F70;
    var F50=document.getElementbyId("Formulaire").element["valeurTTC"].value)*0,50;
    document.getElementbyId("Franchise50").innerHTML=F70;
    var F40=document.getElementbyId("Formulaire").element["valeurTTC"].value)*0,40;
    document.getElementbyId("Franchise40").innerHTML=F70;
    var F20=document.getElementbyId("Formulaire").element["valeurTTC"].value)*0,20;
    document.getElementbyId("Franchise20").innerHTML=F70;
    }
    </script>

  2. #2
    Membre averti
    Homme Profil pro
    Coordinateur Back-Office
    Inscrit en
    Avril 2019
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Coordinateur Back-Office
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2019
    Messages : 34
    Par défaut
    J'ai apporté quelques modifications mais toujours le même résultat (c'est à dire rien )

    Code html : 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
    <form id="Formulaire">
    <p>Nom et prénom: <input id="Nom_Prénom" type="text" size="30px"></p>
    <p>Prix de l'appareil: <input name="valeurTTC" type="text" size="15px"></p>
    <button onclick="CALCUL_FRANCHISE()">Calculer</button>
    <button onclick="window.print()">Impression</button>
    <input class="styled" type="reset" value="Effacer" Align="left"><br>
    </form>
     
    <p>franchise 70 <span id="Franchise70"></span></p>
    <p>franchise 60 <span id="Franchise60"></span></p>
    <p>franchise 50 <span id="Franchise50"></span></p>
    <p>franchise 40 <span id="Franchise40"></span></p>
    <p>franchise 20 <span id="Franchise20"></span></p>
     
     
     
    <script type="text/javascript">
     
    {
    function CALCUL_FRANCHISE()
    var F70, F60, F50, F40, F20, Franchise70, Franchise60, Franchise50, Franchise40, Franchise20;
     
    F70=document.getElementbyId("Formulaire").element["valeurTTC"].value)*0,70;
    document.getElementbyId("Franchise70").innerHTML=F70;
    F60=document.getElementbyId("Formulaire").element["valeurTTC"].value)*0,60;
    document.getElementbyId("Franchise60").innerHTML=F70;
    F50=document.getElementbyId("Formulaire").element["valeurTTC"].value)*0,50;
    document.getElementbyId("Franchise50").innerHTML=F70;
    F40=document.getElementbyId("Formulaire").element["valeurTTC"].value)*0,40;
    document.getElementbyId("Franchise40").innerHTML=F70;
    F20=document.getElementbyId("Formulaire").element["valeurTTC"].value)*0,20;
    document.getElementbyId("Franchise20").innerHTML=F70;
    }
    </script>

  3. #3
    Membre chevronné Avatar de ASCIIDEFOND
    Homme Profil pro
    Autodidacte
    Inscrit en
    Novembre 2002
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Autodidacte

    Informations forums :
    Inscription : Novembre 2002
    Messages : 235
    Par défaut
    Salut sness,

    Pour une simple page HTML avec du JavaScript, il n'est pas nécessaire de passer par un formulaire avec la balise "<form></form>"

    Code html : 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
    <!DOCTYPE html>
    <html lang="en">
     
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
    </head>
     
    <body>
     
        <label for="nomprenom">Nom et prénom:</label><br>
        <input id="nom-prenom" name="nomprenom" type="text" size="30px" style="margin-top: 10px;" /><br><br>
     
        <label for="leprix">Prix de l'appareil:</label><br>
        <input type="text" name="leprix" id="prix" size="15px" style="margin: 10px 0px 10px;" />
     
        <button onclick="calcul_franchise()">Calculer</button>
        <button onclick="window.print()">Impression</button>
        <button class="styled" onclick="effacer()">Reset</button><br>
     
        <p>franchise 70: <span class="franchise"></span></p>
        <p>franchise 60: <span class="franchise"></span></p>
        <p>franchise 50: <span class="franchise"></span></p>
        <p>franchise 40: <span class="franchise"></span></p>
        <p>franchise 20: <span class="franchise"></span></p>
     
        <script>
            let nomPrenom = document.getElementById('nom-prenom'),
                prix = document.getElementById('prix'),
                elementsSpan = document.querySelectorAll('.franchise')
     
            function calcul_franchise() {
                let dataFranchises = ['0.70', '0.60', '0.50', '0.40', '0.20'], // Tableau avec les valeurs des franchises
                    resultat = 0
     
                for (let i = 0; i < elementsSpan.length; i++) { //On boucle les balises avec le nom de class "franchise"
                    resultat = prix.value * dataFranchises[i]
                    elementsSpan[i].textContent = resultat.toFixed(2)
                }
            }
     
            function effacer() {
                for (let i = 0; i < elementsSpan.length; i++) {
                    elementsSpan[i].textContent = null
                }
                nomPrenom.value = null
                prix.value = null
     
            }
        </script>
    </body>
     
    </html>

  4. #4
    Membre averti
    Homme Profil pro
    Coordinateur Back-Office
    Inscrit en
    Avril 2019
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Coordinateur Back-Office
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2019
    Messages : 34
    Par défaut
    Bonjour et merci pour ton retour.

    Donc si je veux insérer le résultat (SPAN) dans une table, la cellule de mon tableau doit bien être:

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <tr>
    	<td>Prise en charge 1ère année</td>
    	<td colspan="2" id="Detail_garanties">franchise 70%, soit <span class="franchise"></span></td>
    	<td id="cellule_prime">100% - 0€ franchise</td>
    </tr>

    Parceque là j'ai un "NaN" qui s'affiche

    Merci pour les conseils

  5. #5
    Membre chevronné Avatar de ASCIIDEFOND
    Homme Profil pro
    Autodidacte
    Inscrit en
    Novembre 2002
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Autodidacte

    Informations forums :
    Inscription : Novembre 2002
    Messages : 235
    Par défaut
    Il faut mieux éviter d’insérer des balises SPAN dans des balises TD.

    Tu peux faire comme cela:
    Code html : 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
        <!-- <p>franchise 70: <span class="franchise"></span></p>
        <p>franchise 60: <span class="franchise"></span></p>
        <p>franchise 50: <span class="franchise"></span></p>
        <p>franchise 40: <span class="franchise"></span></p>
        <p>franchise 20: <span class="franchise"></span></p> -->
     
    <table style="table-layout: auto; width: 20%; text-align: left;">
            <tr>
                <th>Prise en charge</th>
                <th>Franchises</th>
                <th>Valeurs</th>
            </tr>
            <tr>
                <td>1ère année</td>
                <td>70%</td>
                <td class="franchise"></td>
            </tr>
            <tr>
                <td>1ère année</td>
                <td>60%</td>
                <td class="franchise"></td>
            </tr>
            <tr>
                <td>1ère année</td>
                <td>50%</td>
                <td class="franchise"></td>
            </tr>
            <tr>
                <td>1ère année</td>
                <td>40%</td>
                <td class="franchise"></td>
            </tr>
            <tr>
                <td>1ère année</td>
                <td>20%</td>
                <td class="franchise"></td>
            </tr>
        </table>

  6. #6
    Membre averti
    Homme Profil pro
    Coordinateur Back-Office
    Inscrit en
    Avril 2019
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Coordinateur Back-Office
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2019
    Messages : 34
    Par défaut
    Merci beaucoup pour ton aide et tes conseils

    j'ai énormément appris


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

Discussions similaires

  1. Besoin d'aide sur calcul
    Par Mathis75 dans le forum Excel
    Réponses: 1
    Dernier message: 24/10/2017, 17h50
  2. Réponses: 1
    Dernier message: 28/02/2008, 21h40
  3. Besoin d'aide sur les formulaires
    Par Jb-One36 dans le forum VB.NET
    Réponses: 3
    Dernier message: 25/07/2007, 19h48
  4. Besoin d'aide sur les formulaires
    Par Jb-One36 dans le forum Windows Forms
    Réponses: 5
    Dernier message: 22/07/2007, 15h28
  5. besoin d'aide sur un formulaire
    Par Atchoum_002 dans le forum Langage
    Réponses: 6
    Dernier message: 06/10/2005, 14h04

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