如何获取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');
}
});
这里的问题是您的数据源是文本框,它以字符串形式提供值。您需要将其解析为数字。
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。
更新: [已解决]谢谢大家的回答,我试过两种方法,真的很管用! 这是他们的 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');
}
});
这里的问题是您的数据源是文本框,它以字符串形式提供值。您需要将其解析为数字。
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。