将字符串转换为秒数

时间:2016-03-19 17:00:46

标签: javascript string date

我试图创建一个简单的程序,将用户提供的小时数转换为秒,并要求用户重新输入小时数,如果他提供了一个字符串。当我输入非正数时它工作正常数字,但如果输入字符串值,则不显示任何消息。 这是代码:

        function convertToSeconds () {
            var d = prompt("Enter any hour between 0-24","4");
            if ( d<0 ){
                alert("Please enter a number greater than zero");
                convertToSeconds();
            }
            else if( typeof d == String ) {
                /*Problem seems to be here*/
                alert(d + " is not a valid number");
                convertToSeconds();
            }
            else {
            var seconds = 3600*parseFloat(d);
            document.write(seconds);
            }
        };
        convertToSeconds();

2 个答案:

答案 0 :(得分:1)

提示方法返回字符串。您需要确定字符串是否可以转换为0到24之间的正整数,因此:

var d = prompt('Enter any hour between 0-24');

if ( /^(1?[0-9]|2[0-4])$/.test(d) ) {
  alert('looks good');
} else {
  alert('don\'t like that');
}

或者您可以执行以下操作:

var d = Number(prompt('Enter any hour between 0-24'));
if (d == parseInt(d) && d > -1 && d < 25 {
  // ok
}
  // not ok
}

答案 1 :(得分:0)

您的代码只是一个问题。 typeof "any string" = "string" 不是String,JS也默认以字符串格式将数字强制转换为数字,因此我建议在编号之前检查字符串。

function convertToSeconds () {
var d = prompt("Enter any hour between 0-24","4");

    if ( d<0 ){
        alert("Please enter a number greater than zero");
        convertToSeconds();
    }        
    else if( isNaN(d) ) {
        /*Problem seems to be here*/
        alert(d + "is not a valid number");
        convertToSeconds();
    }
    else {
    var seconds = 3600*parseFloat(d);
    document.write(seconds);
    }
};
convertToSeconds();