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 :

acces case tableau


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2008
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 191
    Par défaut acces case tableau
    Salut :

    j'ai un tableau qui contient trois colonnes reference_produit , prix_achat et prix_pourc avec prix_pourc = prix_achat * 1,5

    les colonnes : reference_produit et prix_achat sont remplies par l'utilisateur en html sans accès au base donnés , comment je peux remplir les valeurs de prix_pourc avec javascript.

    la page est en html (statique)

    j'ai utiliser cette formulaire mais s'affiche une erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    i=1;
    while(i<document.getElementById("tab").rows.length)
    {
    document.getElementById("tab").rows[i].cells[2].innerHTML = document.getElementById("tab").rows[i].cells[1].innerHTML * 1.5;
    i++;
    }
    voila elle affiche NAN dans la case

    et merci d'avance

  2. #2
    Expert éminent

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Par défaut
    Bonjour,

    Je me demande si ce n'est pas parce que vous multipliez un nombre (1.5) par une chaine de caractère (la valeur récupérée par votre document.getElementById).

    En fait, il faudrait récupérer cette valeur dans une variable et la parser en Integer:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    var prix_achat = document.getElementById("")... ;
    var prix_pourc = 0;
     
    prix_achat = parseInt(prix_achat);
    prix_pourc = prix_achat * 1.5;

  3. #3
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par vermine Voir le message
    Bonjour,

    Je me demande si ce n'est pas parce que vous multipliez un nombre (1.5) par une chaine de caractère (la valeur récupérée par votre document.getElementById).
    Logiquement, si la chaine de caractère commence par un chiffre, la multiplication est valable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    alert("3bovinos" * 2); // Affiche 6, même si tout le monde sait qu'il y a que 1 Bovino !
    alert("Bovino3" * 2); // Affiche NaN
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById("tab").rows[i].cells[2].innerHTML = document.getElementById("tab").rows[i].cells[1].getElementsByTagName('input')[0].value * 1.5;
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  5. #5
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    @Bovino : il vaut quand même mieux faire explicitement la conversion

    Pour le cas de "3Bovino", pas de problème.
    Mais si la conversion est tronquée à cause d'un séparateur décimal erroné, par exemple, c'est plus embêtant.
    En effet, dans ce cas aucune erreur ne sera détectée (comme dans ton exemple), alors que le calcul sera faux car seule la partie entière aura été prise en compte.

    En plus de la rigueur du code (pour éviter de faire des calculs sur des string), l'utilisation du parseInt() ou parseFloat() permet entre autre de détecter ces erreurs ...

    A+

  6. #6
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par E.Bzz Voir le message
    @Bovino : il vaut quand même mieux faire explicitement la conversion

    Pour le cas de "3Bovino", pas de problème.
    Mais si la conversion est tronquée à cause d'un séparateur décimal erroné, par exemple, c'est plus embêtant.
    En effet, dans ce cas aucune erreur ne sera détectée (comme dans ton exemple), alors que le calcul sera faux car seule la partie entière aura été prise en compte.

    En plus de la rigueur du code (pour éviter de faire des calculs sur des string), l'utilisation du parseInt() ou parseFloat() permet entre autre de détecter ces erreurs ...

    A+
    Je suis entièrement d'accord avec toi : préférer passer par parseInt / parseFloat et préciser la base !

    PS : En plus, effectivement,
    pose problème...
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  7. #7
    Expert éminent

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Par défaut
    Citation Envoyé par Bovino Voir le message
    Logiquement, si la chaine de caractère commence par un chiffre, la multiplication est valable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alert("3bovinos" * 2); // Affiche 6, même si tout le monde sait qu'il y a que 1 Bovino !
    J'ai exécuté votre code et j'ai obtenu NaN.

  8. #8
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    reference_produit et prix_achat sont remplies par l'utilisateur en html
    Dans un input j'imagine ?
    Dans ce cas, il est normal que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById("tab").rows[i].cells[1].innerHTML
    soit NaN !
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  9. #9
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2008
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 191
    Par défaut
    pour Vermine je lui dit que j'ai fait le parseInt mais même problème et pour Bovino je lui dit c'est exacte j'ai fait ça et qu'elle est la solution don ?

  10. #10
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2008
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 191
    Par défaut
    salut Chomeur avec cette instruction n'est pas marcher aussi ( j'aime que le résultat soit en double aussi)

  11. #11
    Membre Expert
    Avatar de Jumano
    Profil pro
    Inscrit en
    Février 2007
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 1 163
    Par défaut
    Bonjour,
    Le mieux serait de nous montrer le code de ta page ...

  12. #12
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2008
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 191
    Par défaut
    bug : affiche dans les cases NAN

  13. #13
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2008
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 191
    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
    <table width="64%" border="1" id="tab2" >
      <tr>
        <td width="10%"><div align="center">Ref</div></td>
        <td width="5%"><div align="center">PA</div></td>
        <td width="26%"><div align="center">PA nouv</div></td>
      </tr>
     
      <tr>
        <td>sds</td>
        <td>13</td>
        <td>&nbsp;</td>
      </tr>
      <tr>
        <td>sff</td>
        <td>111</td>
        <td>&nbsp;</td>
      </tr>
      <tr>
        <td>fffe</td>
        <td>5,5</td>
        <td>&nbsp;</td>
      </tr>
      <tr>
        <td>eefef</td>
        <td>12</td>
        <td>&nbsp;</td>
      </tr>
    </table>
    <p>
      <label>
      <input type="button" name="button3" id="button3" value="calcule" onclick="calcule();"/>
      </label>
    </p>
     
    avec 
     
    function calcule()
    {
    n=document.getElementById("tab").rows.length;
    i=1;
    for(i=1;i<n;i++)
    {
    var b ;
    b=parseInt(document.getElementById("tab").rows[i].cells[1].innerHTML)*1.5;
    document.getElementById("tab").rows[i].cells[2].innerHTML =b;
    }
     
    }
    }

  14. #14
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Par défaut
    sinon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    parseInt(document.getElementById("tab").rows[i].cells[1].innerHTML) * 1.5

  15. #15
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Sans oublier de préciser la base 10 pour parseInt(), sinon bugg potentiel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    parseInt(document.getElementById("tab").rows[i].cells[1].innerHTML, 10) * 1.5


    A+

  16. #16
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Par défaut
    E.Bzz , c'est a dire ?? quel genre de bug ?

  17. #17
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Citation Envoyé par le_chomeur Voir le message
    E.Bzz , c'est a dire ?? quel genre de bug ?
    Si la base de conversion n'est pas précisée, la fonction la déduit des 1° caractères. Du coup, il peut y avoir des surprises (sous IE6 et FF2 en tous cas)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <input type="button" onclick="alert(parseInt('08', 10));" value="8">
     
    <input type="button" onclick="alert(parseInt('09'));" value="9">
    A+

Discussions similaires

  1. Réponses: 2
    Dernier message: 03/11/2007, 11h24
  2. switch case tableau
    Par zibou dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 03/05/2007, 09h25
  3. [vba] Accès case à cocher d'un autre formulaire
    Par Jujuforce dans le forum VBA Access
    Réponses: 8
    Dernier message: 19/04/2007, 16h24
  4. case tableau: comment faire des hauteurs plus petites que 23px
    Par cortex024 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 28/11/2006, 17h01
  5. pb d'accès à un tableau associatif
    Par nixonne dans le forum Langage
    Réponses: 15
    Dernier message: 11/05/2006, 01h40

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