Javascript si la condition sur boolean
Pouvez-vous expliquer pourquoi la condition si ne fonctionne pas sans la fonction eval:
var myBoolean= document.getElementById("someBoolean").value; //This is a 'false'
if(myBoolean)
{
alert(Your boolean is True); //This condition always getting executed even though myBoolean is false;
}
if(eval(myBoolean))
{
alert("You will never see this alert bcoz boolean is false");
}
Comment
Salut Fusée, c'est un champ de saisie avec false comme valeur.
Désolé pour le mettre à jour. 🙂
document.getElementById("someBoolean");
retour 'false'
?Salut Fusée, c'est un champ de saisie avec false comme valeur.
document.getElementById("someBoolean");
retourne un élément du DOM (ou null
). Pour obtenir la valeur que vous avez à faire document.getElementById("someBoolean").value;
.Désolé pour le mettre à jour. 🙂
OriginalL'auteur user1052591 | 2011-12-01
Vous devez vous connecter pour publier un commentaire.
En Javascript, les valeurs suivantes sont traitées comme des
false
pour les conditions:false
null
undefined
''
0
NaN
Tout le reste est traité comme
true
.'false'
est rien de ce qui précède, il est donctrue
.OriginalL'auteur Davy8
La chaîne
'false'
renvoie le booléentrue
Salut JZ11, Pourquoi ne 'false' renvoie la valeur booléenne vrai???
Chaînes de caractères en JavaScript convertir
true
, sauf s'ils sont vides (''
).Il ne s'évaluer à l'
String
'false'
. Il est l'obtention de la valeur de l'élément, et non pas l'élément lui-même. Regardez, c'est à l'aide de.value
mais il doit l'être à l'aide de.val()
à la place.la question a été mise à jour, la question d'origine n'ont pas
.value
OriginalL'auteur jamesfzhang
C'est parce qu'il n'est pas vraiment un booléen, c'est la chaîne
'false'
. Lorsque vous convertissez une chaîne de caractères en une valeur booléenne,''
estfalse
et tout le reste esttrue
.Vous vérifier si il est égal à la chaîne
'false'
(ou'true'
) ou pas.Ouais, j'ai réalisé que, c'est pourquoi j'ai changé ma réponse, et aussi l'a fait remarquer l'OP.
OriginalL'auteur Rocket Hazmat
"false" = = true, follement suffisamment en raison de JavaScript implicite du type de contrainte. Découvrez ces autres exemples de Crockford Les Éléments de Style JavaScript.
Vous pourriez résoudre ce problème, modifiez votre code pour quelque chose comme
Aussi, il est presque toujours préférable de les utiliser !! et === plutôt que ! et ==
Comme je l'ai dit dans ma réponse, j'irais avec var myBoolean = document.getElementById("someBoolean").valeur === "true" ou une certaine variation.
OriginalL'auteur AlexC
document.getElementById("someBoolean") ne renvoie pas une valeur booléenne (true/false) retourne un élément ou indéfini /null
vous pouvez inverser votre logique et d'obtenir le résultat attendu:
vous avez raison :).la valeur n'était pas là avant, lol
Désolé TimWickstrom, j'ai mis à jour il peu en retard 🙂
OriginalL'auteur TimWickstrom.com
Essayer:
Comme d'autres l'ont dit, une chaîne n'est pas une valeur booléenne, afin de l'utiliser comme si c'était vous donnera une erreur de logique.
OriginalL'auteur Boundless
Une chaîne de caractères EST un boolean valeur de vérité selon l'ECMA
'false'
est considéré comme une véritable valeur booléenne contextes.whatever && false
doit toujours être faux, indépendamment dewhatever
apporte à la table, et oui, la valeur effective de""||false
peut être""
, mais je voudrais comprendre ce que le "faux" dans un contexte booléen.Cette réponse ne fournit pas de rien les autres réponses à cette question ont déjà fourni.
OriginalL'auteur duckisland