字符串到整数未正确定义
String to Integer not defining properly
我有一个脚本,它从 HTML 表单中获取用户输入,然后定义一些 js 变量,但是当我尝试将 "minute" 和 "hour" 字符串转换为整数。
我让脚本在用户输入变量后将变量输出到控制台,这工作正常,但在我尝试将它们转换为整数并再次将它们输出到控制台后,我只收到 "undefined" 消息.
//this is where the variables are output as strings -- this works
console.log(dropHour);
console.log(dropMinute);
//set hour and minute strings to integers -- doesn't work?
var Hour = parseInt(dropHour);
var Minute = parseInt(dropMinute);
console.log(dropMinute.type);
console.log(dropHour.type);
或者有更好的方法吗?就像只输入数字并从一开始就是一个字符串?我基本上只需要用户能够 select 一次,然后有一个功能检查用户 selected 时间是否与当前时间相同(这是使用此功能完成的,它不我猜是因为我的上述问题)
//checks if time set = current time
function checkTime() {
var currentTime = new Date();
console.log(currentTime.getHours);
if ((currentTime.getHours == Hour) && (currentTime.getMinutes == Minute)) {
console.log("time set = time now");
console.log(currentTime.getHours + currentTime.getMinutes);
setInterval(otherFunction(), 10);
}
}
我不确定我是否理解这段代码:
var Hour = parseInt(dropHour);
var Minute = parseInt(dropMinute);
console.log(dropMinute.type);
console.log(dropHour.type);
您正在创建 Hour
和 Minute
,它们是数字,但随后再次查看 dropHour
和 dropMinute
(parseInt
不 改变一个变量,它returns一个新的值)。更不用说 .type
不太对了。像这样的代码可能更符合您的需求:
console.log(dropHour);
console.log(dropMinute);
var Hour = parseInt(dropHour, 10);
var Minute = parseInt(dropMinute, 10);
console.log(typeof Hour);
console.log(typeof Minute);
这是a working example: https://jsbin.com/mekilu/edit?js,output
除了使用正确的变量外,我还将 parseInt(...)
更改为 parseInt(..., 10)
,因为始终指定基数是个好主意,Hour.type
和 Minute.type
typeof Hour
和 typeof Minute
.
The parseInt() function parses a string argument and returns an integer of the specified radix (the base in mathematical numeral systems).
parseInt 仅适用于字符串,但如果它具有 toString
方法并且 returns 一个 ,它也适用于 Object string
它在内部将对象转换为字符串并调用 toString 方法
var MyClass = function() {}
MyClass.prototype.toString = function() { return '1'; }
var myClass = new MyClass();
parseInt(myClass)//outputs 1
所以如果你的对象没有 returns a String Number
它就不会工作。
因此,当您使用 parseInt 时,您可以使用 isNaN
函数检查它是否不是数字。
我有一个脚本,它从 HTML 表单中获取用户输入,然后定义一些 js 变量,但是当我尝试将 "minute" 和 "hour" 字符串转换为整数。
我让脚本在用户输入变量后将变量输出到控制台,这工作正常,但在我尝试将它们转换为整数并再次将它们输出到控制台后,我只收到 "undefined" 消息.
//this is where the variables are output as strings -- this works
console.log(dropHour);
console.log(dropMinute);
//set hour and minute strings to integers -- doesn't work?
var Hour = parseInt(dropHour);
var Minute = parseInt(dropMinute);
console.log(dropMinute.type);
console.log(dropHour.type);
或者有更好的方法吗?就像只输入数字并从一开始就是一个字符串?我基本上只需要用户能够 select 一次,然后有一个功能检查用户 selected 时间是否与当前时间相同(这是使用此功能完成的,它不我猜是因为我的上述问题)
//checks if time set = current time
function checkTime() {
var currentTime = new Date();
console.log(currentTime.getHours);
if ((currentTime.getHours == Hour) && (currentTime.getMinutes == Minute)) {
console.log("time set = time now");
console.log(currentTime.getHours + currentTime.getMinutes);
setInterval(otherFunction(), 10);
}
}
我不确定我是否理解这段代码:
var Hour = parseInt(dropHour);
var Minute = parseInt(dropMinute);
console.log(dropMinute.type);
console.log(dropHour.type);
您正在创建 Hour
和 Minute
,它们是数字,但随后再次查看 dropHour
和 dropMinute
(parseInt
不 改变一个变量,它returns一个新的值)。更不用说 .type
不太对了。像这样的代码可能更符合您的需求:
console.log(dropHour);
console.log(dropMinute);
var Hour = parseInt(dropHour, 10);
var Minute = parseInt(dropMinute, 10);
console.log(typeof Hour);
console.log(typeof Minute);
这是a working example: https://jsbin.com/mekilu/edit?js,output
除了使用正确的变量外,我还将 parseInt(...)
更改为 parseInt(..., 10)
,因为始终指定基数是个好主意,Hour.type
和 Minute.type
typeof Hour
和 typeof Minute
.
The parseInt() function parses a string argument and returns an integer of the specified radix (the base in mathematical numeral systems).
parseInt 仅适用于字符串,但如果它具有 toString
方法并且 returns 一个 ,它也适用于 Object string
它在内部将对象转换为字符串并调用 toString 方法
var MyClass = function() {}
MyClass.prototype.toString = function() { return '1'; }
var myClass = new MyClass();
parseInt(myClass)//outputs 1
所以如果你的对象没有 returns a String Number
它就不会工作。
因此,当您使用 parseInt 时,您可以使用 isNaN
函数检查它是否不是数字。