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 :

Conditions || en js


Sujet :

JavaScript

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 257
    Points : 97
    Points
    97
    Par défaut Conditions || en js
    Bonjour,
    Pour faire un calcul, j'ai ceci
    avec un OR (||)
    mais la deuxième condition ne fonctionne pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (document.getElementById('height').value!='' || document.getElementById('height').value!=0) {h=document.getElementById('height').value;} else {h=1;}
    Ce qui est étonnant c'est que cela m'arrive en php aussi des fois mais pas toujours.
    Quand ca ce passe je duplique le test avec un else if
    Vous auriez une idée ?

    Merci
    "Ils ne savaient pas que c'était impossible, alors ils l'ont fait." Mark Twain

  2. #2
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut


    Il faut manipuler un nombre pas un texte.

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    const elemHeight = document.querySelector('#height');
     
    let 
        h = 0, // un Number !
        elemHeightValue = Number(elemHeight.value); // on transforme le String en Number
     
    if (elemHeightValue && elemHeightValue !== 0) {
        h = elemHeightValue;
    } else {
        h = 1;
    }

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  3. #3
    Membre expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 873
    Points : 3 717
    Points
    3 717
    Par défaut
    La deuxième condition pour toi c'est document.getElementById('height').value!=0 ?

    Je ne sais pas ce que tu entends par "la deuxième condition ne fonctionne pas" mais si comme je le pense document.getElementById('height').value est une string alors je ne comprends pas pourquoi tu la compares au nombre 0... Peut-être que tu veux la comparer avec la string "0" ? Si oui ben il manque juste les guillemets...

    PS : Tu utilises plusieurs fois document.getElementById('height').value ce serait mieux de le stocker dans une variable ce serait plus rapide et peut-être même plus lisible car moins long...


    EDIT : Ah Daniel a répondu.

  4. #4
    Membre régulier
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 257
    Points : 97
    Points
    97
    Par défaut
    Bonjour,
    ok, merci des réponses.

    - document.getElementById('height').value est bien un nombre.
    - document.getElementById('height').value!=0 est bien la deuxième condition
    - Je ne réussi pas à récupérer la value avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    const elemHeight = document.querySelector('#height');
    Faudrait-il faire ceci ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    const elemHeight = document.querySelector(document.getElementById('height').value);
    - Oui, pour mettre les document.getElementById('....').value dans une variable (faut que j'en prenne l'habitude)

    On peut faire ca ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    height=document.getElementById('height').value;
    if (height == 0) {h=1;} else {h=height;}
    Qui gère la valeur 0 et la valeur '' (vide)
    "Ils ne savaient pas que c'était impossible, alors ils l'ont fait." Mark Twain

  5. #5
    Membre expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 873
    Points : 3 717
    Points
    3 717
    Par défaut
    Citation Envoyé par feelwatt Voir le message
    - document.getElementById('height').value est bien un nombre.
    J'en doute, peux-tu nous dire quel est l’élément HTML qui a pour ID "height" ? Je pense que c'est une input ou un textearea, non ? Si oui alors il s'agit bien d'une string mais une string peut correspondre à un nombre bien sûr mais il faudra une conversion dans certains cas, cela dépend de l'usage que tu veux en faire...


    Citation Envoyé par feelwatt Voir le message
    document.getElementById('height').value!=0 est bien la deuxième condition
    Oui mais là je pense que tu compares une string à un nombre et cela ne fonctionne pas... Quand dans une input (texte) tu as un 0, il s'agit de la string "0" et non du nombre 0.

    Alors il te faut convertir l'un des deux... Par exemple tu peux faire comme déjà dit : document.getElementById('height').value != "0"


    Citation Envoyé par feelwatt Voir le message
    Je ne réussi pas à récupérer la value avec

    const elemHeight = document.querySelector('#height');

    Faudrait-il faire ceci ?

    const elemHeight = document.querySelector(document.getElementById('height').value);
    Ni l'un ni l'autre, tu peux faire simplement : const valueOfElemHeight = document.getElementById('height').value ;

    Ou bien si tu fait :
    const elemHeight = document.getElementById('height') ;

    Alors tu peux récupérer "value" comme ça :
    elemHeight.value.

    Citation Envoyé par feelwatt Voir le message
    On peut faire ca ?
    1
    2
    height=document.getElementById('height').value;
    if (height == 0) {h=1;} else {h=height;}

    Qui gère la valeur 0 et la valeur '' (vide)
    Non mais dis-nous en français ce que tu veux faire...

    Si height vaut 0 tu veux fixer h à 1 ? Sinon tu veux que h=height ?
    Mais quand la chaine est vide, que veux-tu faire ?


    Attention height pourrait ne pas être un nombre, je te conseille (si ce n'est déjà le cas) d’utiliser une input de type number avec une valeur min (fixé à 1 puisque tu ne veux pas d'un height à 0) et éventuellement une valeur max...

  6. #6
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 658
    Points
    66 658
    Billets dans le blog
    1
    Par défaut
    document.getElementById('height').value est bien un nombre.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    +document.getElementById('height').value // est bien un nombre.
    1*document.getElementById('height').value // est bien un nombre.
    Si la saisie dans l'input est numérique [0-9.] ....
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  7. #7
    Membre régulier
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 257
    Points : 97
    Points
    97
    Par défaut
    Salut,
    Merci pour les précisions.
    c'est une input ou un textearea, non ? Si oui alors il s'agit bien d'une string
    D'accord, je n'avais pas pensé à ça.

    Donc:
    document.getElementById('height').value != "0"
    Et j'opte donc pour
    je te conseille (si ce n'est déjà le cas) d’utiliser une input de type number avec une valeur min (fixé à 1 puisque tu ne veux pas d'un height à 0) et éventuellement une valeur max...
    Avec un min="0".
    Comme ça ça évite d'avoir à gérer les chaines vide.

    Merci pour ces précisieux infos.
    "Ils ne savaient pas que c'était impossible, alors ils l'ont fait." Mark Twain

  8. #8
    Membre expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 873
    Points : 3 717
    Points
    3 717
    Par défaut
    Avec un min="1" tu pourrais aussi éviter d'avoir à gérer le cas "0"...

    Et n'oublie pas de convertir en nombre (par exemple en ajoutant un "+" devant) avant d'affecter la variable h : h=+height; et non h=height;...

  9. #9
    Membre régulier
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 257
    Points : 97
    Points
    97
    Par défaut
    h=+height;
    est bien.
    ---
    min="1", empêche d'avoir des valeur de 0.1 par exemple.
    "Ils ne savaient pas que c'était impossible, alors ils l'ont fait." Mark Twain

  10. #10
    Membre expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 873
    Points : 3 717
    Points
    3 717
    Par défaut
    Oui mais dans ce cas à toi de voir quel est ton min, ici cela pourrait être : 0.1 ... De toute façon tu dois avoir un pas avec la input de type number, si c'est 0.1 le min est 0.1 si c'est 0.01 le min c'est 0.01...

    De plus si c'est à un élément que tu veux affecter cette hauteur alors c'est une valeur entière qui sera affectée...

    Regarde cet exemple : https://jsbin.com/vuvuyutove/edit?html,js,output

    Le code est simple, pas besoin de conversion ni de condition :

    Code js : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function changeHauteur() {
     
      var height = document.getElementById('height').value ;  
      var divVerte = document.getElementById('IDdiv') ;  
      divVerte.style.height = height + "px" ;   
    }

    Tu peux tester avec le lien ci-dessus...

  11. #11
    Membre régulier
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 257
    Points : 97
    Points
    97
    Par défaut
    Salut,
    oui tout à fait.
    Je vais opter pour le type number.

    Merci à tous.

    Ps: je laisse un peu ouvert et je mets en résolu un peu plus tard.
    "Ils ne savaient pas que c'était impossible, alors ils l'ont fait." Mark Twain

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

Discussions similaires

  1. Condition If multiple
    Par M1000 dans le forum ASP
    Réponses: 2
    Dernier message: 01/03/2004, 13h46
  2. [MYSQL] conditions et requetes
    Par sebos63 dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 26/02/2004, 16h41
  3. Condition sur debug et release
    Par xave dans le forum MFC
    Réponses: 3
    Dernier message: 04/02/2004, 15h04
  4. Condition et contenu TImage
    Par Detlev_linux dans le forum Langage
    Réponses: 6
    Dernier message: 23/12/2003, 01h00
  5. boucle avec condition d'arret changeante
    Par NicoH dans le forum Langage
    Réponses: 3
    Dernier message: 10/06/2003, 11h48

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