2012-09-26 6 views
0

J'utilise Y.one (selector) .getAttribute ('value'); pour retourner la valeur sur une page et j'ai du mal à traiter des cas où value = "".getAttribute ('value') quand value = ""

var check_value = Y.one(selector).getAttribute('value'); 
if (check_value != undefined || check_value != null || check_value != "") { 
    alert(check_value); 
} 

Avec toutes ces vérifications, je reçois une boîte d'alerte vide lorsque la valeur de l'élément que je regarde est "". Dans ce cas, puisque je sais que la valeur que je cherche est un nombre, je peux changer le chèque pour juste chercher un nombre> 0 et le faire fonctionner mais je me demandais si quelqu'un connaissait une méthode pour vérifier la valeur pour les cas où Je n'avais pas affaire à des données numériques.

if (check_value >0) { 
    alert(check_value); 
} 

Cette méthode fonctionne dans mon cas.

+0

Comme il a été souligné la première check produira toujours de mauvais résultats à cause des contrôles || (ou) sur la même valeur et j'aurais dû tester avec $$ (et). –

Répondre

4

Pourquoi ne vérifiez-vous pas simplement «vérité» à la place? Il est fondamentalement le même que votre (prévu) vérifier, je suppose. Et si vous avez besoin de vérifier 0 (un numéro), il suffit d'utiliser ceci:

if (check_value || check_value === 0) { 
    ... 
} 
+0

Cela fonctionne pour moi et me donne les résultats dont j'ai besoin si dans mon cas, j'ai besoin de la vraie vallée utilisera donc if (check_value) {alert (check_value); } –

+0

@JoeW Bien sûr.J'ai mis à jour ma réponse - et maintenant je me suis demandé pourquoi je pensais vraiment à annuler cette vérification. – raina77ow

+0

vous pourriez avoir pensé à '!! check_value' qui le forcera à une valeur booléenne au lieu de déterminer sa véracité. – JKirchartz

2

S'il s'agit d'une chaîne vide, elle n'est pas indéfinie et n'est pas nulle. Puisque vous vérifiez si ce n'est pas indéfini ou non nul ou pas une chaîne vide, alors ça passera.

utilisation && pas ||

+0

Merci pour le pointeur, je ne sais pas comment j'ai raté cette erreur –

0

Regardez la logique check_value != undefined || check_value != null || check_value != "" anglais simple si elle est undefined or null or "", si elle est nulle ce n'est pas définie, si elle est vide ce n'est pas nulle, si tout passe; vous êtes à la recherche d'une logique AND au lieu de OR

essayez ceci:

var check_value = Y.one(selector).getAttribute('value'); 
if (check_value != undefined && check_value != null && check_value != "") { 
    alert(check_value); 
} 
+0

Merci pour le pointeur, je ne sais pas comment j'ai raté cette erreur. –

0

Vous voyez l'alerte parce que votre déclaration a ifOR (||) clauses. Dans le cas où l'attribut value est une chaîne vide, la dernière condition (check_value != "") doit échouer. Cependant, puisque "" n'est pas égal à undefined la première condition a déjà retourné vrai, le test if passe (il n'évaluera pas les autres conditions car il n'en a pas besoin) et le bloc if est exécuté.

Je suppose que vous vouliez réellement utiliser AND (&&) à la place.

+0

Merci pour le pointeur, pas sûr maintenant que j'ai raté cette erreur. –