2016-06-30 2 views
0

Salut, je suis en train de vérifier la valeur des DOM avec:commande typeof ne marche pas le travail

if ($('#ATTN').val() == '') {    
    $('#ATTN').val(0); 
} else { 
    iattn=$('#ATTN').val(); 
    alert(iattn); 

    if(typeof iattn == 'number'){ 
     alert('oh'); 
    } 
} 

mais il ne retourne rien. Aussi aucune erreur affichée.

+0

Avez-vous ouvert votre débogueur et vu ce que «typeof iattn» est exactement? – arjabbar

+2

On dirait que 'typeof iattn' serait une chaîne si vous l'avez obtenu à partir d'un texte de type d'entrée. –

+1

$ ('# ATTN'). Val() - chaîne de retour, pas de numéro. –

Répondre

1

Cette ligne

iattn=$('#ATTN').val(); 

Renvoie une chaîne.

Si vous voulez voir si elle peut être convertie en un entier, alors ce que vous voulez est ceci:

iattn=parseInt($('#ATTN').val()); 
if (iattn) { 
    alert("oh"); 
} 

Utilisez parseFloat plutôt que parseInt si vous voulez un test de nombre plus général.

Si vous voulez vérifier que le résultat de l'analyse syntaxique correspond à l'entrée, utilisez quelque chose comme ceci:

iattn=$('#ATTN').val(); 
if (iattn == parseInt(iattn)) { 
    alert("oh"); 
} 

Une vérification plus simple, qui convertira pas réellement quoi que ce soit à un certain nombre, et permettra à tous les numéro formats (par exemple 2.3, 0x3, +23) est la suivante:

if (!isNaN(iattn)) { 
    alert("oh"); 
} 

Crédit à @pswg d'un commentaire.

+1

mais il y a des chances que l'utilisateur donne une valeur de texte par erreur et que parseint la convertisse aussi en nombre entier. ça va faire du désordre! – Bineesh

+1

Si l'utilisateur donne une valeur de texte qui ne peut pas être convertie en nombre entier, 'iattn' sera' NaN' et la condition if échouera. –

+0

J'ai mis à jour avec une vérification que la valeur analysée est similaire à l'entrée, pour traiter des cas comme "2sdfsdsdf". Mais si l'utilisateur entre par exemple "2.0", la vérification échouera. –

0

.val() retour une DOMString (string)

donc typeof iattn sera toujours un string

si vous voulez que le typeof number vous devez convertir int

utilisant parseInt(iattn) ou parseFloat(iattn)

+1

Ou 'parseFloat' –

+0

@ChrisLear édité;) – HudsonPH