2
votes

Afficher un vrai / faux comme oui / non avec l'instruction if / else jquery

Je souhaite afficher l'état d'un utilisateur comme "actif: oui". Je ne sais pas comment écrire l'instruction if else. J'ai essayé de l'écrire moi-même, mais il affiche toujours "active: 1". J'ai essayé de faire une déclaration if else moi-même, mais cela ne fonctionne pas.

<script>
    let jUser = {
        "name":"A",
        "lastName":"B",
        "active": 1
    }

    $('#lblName').text(jUser.name)
    $('#lblLastName').text(jUser.lastName)

    //if else statement here: 

    if ('active' == '1') {
        $('#lblActive').text("yes")  
    }
    else if ('active' == '0') {
        $('#lblActive').text("yes") 
    }

    $('#lblActive').text(jUser.active)

    $('.navlink').click( function(){ 
        $('.navlink').removeClass('active')                 
        $('.page').hide() 
        $(this).addClass('active')                          
        let sPageToShow = $(this).attr('data-showPage')     
        $('#'+sPageToShow).show()
    })

</script>

Pour le moment, la sortie est celle que j'écris, mais je veux l'afficher par oui ou par non.

Merci


4 commentaires

vous comparez une chaîne (active) à une chaîne numérique (1/0) - cela ne remplira jamais le conditionnel. Vous devez réellement obtenir la valeur active - ne pas utiliser de chaîne


Tout d'abord, vous comparez des chaînes, pas la valeur des variables. Deuxièmement, les deux côtés de votre condition if (si cela a fonctionné) font la même chose ...


Et quel est le problème avec l'écriture de jUser.active == 1 dans le if? Et la chose correspondante dans le else if ?


if (jUser.active === 1 || jUser.active === 0)


3 Réponses :


0
votes

Il y a quelques problèmes ici:

  • Vous comparez les valeurs littérales de chaîne active et 1 , et non la valeur contenue dans les variables
  • active est une propriété de jUser donc il devrait être jUser.active
  • jUser.active contient un entier, pas une chaîne. Bien qu'une comparaison implicite fonctionne, il est préférable de comparer les mêmes types.
  • Vous écrasez le text () dans la dernière instruction afin que le if soit redondant
  • Les deux côtés de la condition if font la même chose

Notez également que si active n'a que deux états possibles (vraisemblablement 1 ou 0 dans votre exemple) alors il Cela a plus de sens qu'il s'agisse d'une valeur booléenne true / false .

Avec tout cela à l'esprit, vous pouvez atteindre votre objectif avec une simple expression ternaire :

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
Active: <label id="lblActive"></label>
let jUser = {
  "name": "A",
  "lastName": "B",
  "active": 1
}

$('#lblActive').text(jUser.active === 1 ? 'Yes' : 'No');

/*
// the same logic in a full 'if' condition:
if (jUser.active === 1) {
  $('#lblActive').text('Yes');
} else {
  $('#lblActive').text('No');
}
*/


3 commentaires

Merci - Je suis nouveau dans ce domaine donc j'essaie de comprendre la logique. Cela aide beaucoup avec l'explication. Et il fonctionne!


Aucun problème. N'oubliez pas d'accepter une réponse si cela vous a aidé.


Je l'ai fait, mais j'ai eu ce commentaire: "Les votes exprimés par ceux qui ont moins de 15 points de réputation sont enregistrés, mais ne modifiez pas le score affiché publiquement"



0
votes

Vous ne pouvez pas accéder à la variable en la mettant entre guillemets '' . Et active est à l'intérieur de jUser , vous devez y accéder en utilisant jUser.active ou jUser ["active"]. Et supprimez $ ('# lblActive'). Text (jUser.active) après vos blocs if

if (jUser.active === 1) {
    $('#lblActive').text("yes")  
}
if (jUser.active === 0) {
    $('#lblActive').text("no") 
}


0 commentaires

0
votes

Vous compariez une chaîne à un nombre, ce qui ne ferait jamais rien. Vous devez comparer la propriété active de l'objet jUser au nombre 1 , puis définir un texte d'affichage "oui" ou "non "

let jUser = {
    "name":"A",
    "lastName":"B",
    "active": 1
}

$('#lblName').text(jUser.name)
$('#lblLastName').text(jUser.lastName)

let activeStatus = jUser.active === 1 ? "yes" : "no";
$('#lblActive').text(activeStatus);

$('.navlink').click( function(){ 
    $('.navlink').removeClass('active')                 
    $('.page').hide() 
    $(this).addClass('active')                          
    let sPageToShow = $(this).attr('data-showPage')     
    $('#'+sPageToShow).show()
})


0 commentaires