如何获得输入值的类型?

时间:2015-02-28 05:41:49

标签: javascript typeof

更新: [已解决]感谢大家回答我,我尝试了两种方法,这真的很有效! 以下是jsbin:

This one was inspired by Secret's answer

This one is from Alexander's O Mara's answer

我试图检查输入的值是否为数字。 我正在使用typeof进行检查。如果输入的值是数字alert('number');。但如果输入的值是字符串alert(’string');

问题是,它总是alert(’string');,尽管输入的值是数字。

出了什么问题?我该如何解决?

这是我的代码:

<input type="text" placeholder="inputText" id="inputText">
<input type="button" onclick="alertType()" value="alertType">
<script>
 function alertType()
 {
  var someStr = document.getElementById("inputText").value;
  var someStrType = typeof someStr;
  alert(someStrType);
 }
</script>

5 个答案:

答案 0 :(得分:1)

您只需使用Number将字符串转换为数字,然后使用isNaN检查是否已成功转换为数字。如果Number无法转换为NaN可以检测到的数字,isNaN将返回<input type="text" placeholder="inputText" id="inputText"> <input type="button" onclick="alertType()" value="alertType"> <script> function alertType() { var someStr = document.getElementById("inputText").value; var someNum = Number(someStr); if (isNaN(someNum)) { alert('not a number'); } else { alert('a number'); } } </script>

{{1}}

答案 1 :(得分:1)

这里的问题是你的数据源是textbox,它以字符串形式给出值。您需要将其解析为数字。

答案 2 :(得分:1)

var my_numberA = 3;     //  This is typeof number
var my_numberB = '3';   //  This is typeof string

所以取决于你如何写它:3是一个数字,其中'3'是一个字符串

诀窍是执行以下操作:

任何字符串乘以1都会将字符串转换为数字。 但是,乘以不能用数字表示的字符串将返回错误。 因此,您需要使用try {} catch(err){}来补偿这种可能性,如果可能的话,将字符串转换为数字

function convertToNumber(input){
    try{var output = 1*input}catch(error){var output = input}
    return output
}

var my_numberA = 3;     //  This is typeof number
var my_numberB = '3';   //  This is typeof string

console.log( typeof my_numberA ) // Will show 'number'
console.log( typeof my_numberB ) // Will show 'string'

console.log( typeof convertToNumber(my_numberA) ) // Will show 'number'
console.log( typeof convertToNumber(my_numberB) ) // Will show 'number'

我更喜欢这种情况而不是Number()函数,因为它返回相同的传递对象而不是返回NaN。

答案 3 :(得分:0)

问题是,当您从dom获取inputText值时, 是一个字符串。例如,"12"是一个字符串,而不是12

您可以做的是检查是否不是数字

function alertType()
 {
  var someStr = document.getElementById("inputText").value;
  if(isNaN(someStr)){
     //it's not a number!
  } else  { 
     //it's a number!
  }
 }

答案 4 :(得分:0)

试试这个......

$('#clickMe').click(function () {
    var inputVal = $("#inputText").val();
    var value = Number(inputVal);

    if (isNaN(value)) {
        alert('not a number');
    } else {
        alert('a number');
    }
});

https://jsfiddle.net/mky9vxdy/1/