String to Integer没有正确定义

时间:2015-12-27 05:48:20

标签: javascript variables parseint

我有一个脚本从HTML表单中获取用户输入,然后定义一些js变量,但是当我尝试转换"分钟时,这些变量似乎没有定义#34;和"小时"字符串成整数。

我让脚本在用户输入后将变量输出到控制台,并且工作正常,但在我尝试将它们转换成整数并再次输出到控制台后,我只是收到& #34;未定义"消息。

//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);

或者有更好的方法吗?就像只输入数字一样,并且从一开始就是一个字符串?我基本上只需要用户能够选择一个时间,然后让功能检查用户选择的时间是否与当前时间相同(这是使用此功能完成的,由于我的上述功能而无法工作问题,我推测)

//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);
    }
}

2 个答案:

答案 0 :(得分:0)

我不确定我是否理解这段代码:

var Hour = parseInt(dropHour);
var Minute = parseInt(dropMinute);
console.log(dropMinute.type);
console.log(dropHour.type);

您正在创建HourMinute这些数字,但随后再次查看dropHourdropMinuteparseInt不会更改一个变量,它返回一个 new 值)。更不用说.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 examplehttps://jsbin.com/mekilu/edit?js,output

除了使用正确的变量之外,我还将parseInt(...)更改为parseInt(..., 10),因为始终指定基数是个好主意,Hour.typeMinute.type来{ {1}}和typeof Hour

答案 1 :(得分:0)

<强> The parseInt() function parses a string argument and returns an integer of the specified radix (the base in mathematical numeral systems).

parseInt仅适用于字符串,但如果它具有 toString 方法,则它也可以与Object一起使用。返回 string ,它在内部将对象转换为字符串&amp;调用toString方法

var MyClass = function() {}
MyClass.prototype.toString = function() { return '1'; }

var myClass = new MyClass();
parseInt(myClass)//outputs 1

因此,如果您的对象未返回 String Number ,则无效。

因此,当您使用parseInt时,您可以使用 isNaN 函数检查它是否不是数字。

参考parseIntisNaN