如何获取typeof输入的值?

How to get typeof entered value?

更新: [已解决]谢谢大家的回答,我试过两种方法,真的很管用! 这是他们的 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>

事实是,当您从 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!
  }
 }

您可以使用 Number, and use isNaN 将字符串简单地转换为数字,以检查它是否已成功转换为数字。 Number 将 return 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>

试试这个...

$('#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/

这里的问题是您的数据源是文本框,它以字符串形式提供值。您需要将其解析为数字。

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

因此取决于您的书写方式:3 是一个数字,其中“3”是一个字符串

诀窍是执行以下操作:

任何字符串乘以 1 都会将字符串转换为数字。 但是,将不能用数字表示的字符串相乘会return报错。 因此,您需要使用 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() 函数,因为它 return 是相同的传递对象而不是 returning NaN。