2

我正在尝试制作一个用于受控时间输入的“小部件”,除了允许您手动输入值外,它还使用向上和向下箭头来增加每个部分。它工作正常(从 12 循环到 1 和 59 到 1 等),但是当我添加一个在值低于 10 时正确格式化分钟的部分时,它开始起作用。

按下正常直到显示 10,“10”然后“09”然后“0-1”。

当你到达“0-1”后按下去“01”,但当你到达“08”时,它又回到“01”。

function minFix(mins)
{
if ( mins <= 9)
    {
        mins = "0" + String(mins);
        document.getElementById("mins").value = mins;
    }
else
    {
        document.getElementById("mins").value = mins;
    }
}


function minUp()
{
var mins = parseInt(document.getElementById("mins").value);
if (mins == 59)
    {
        mins = 1;
        minFix(mins);
    }
else
    {
        mins = (mins+1);
        minFix(mins);
    }
}


function minDown()
{
var mins = parseInt(document.getElementById("mins").value);
if (mins == 1)
    {
        mins = 59;
        minFix(mins);
    }
else
    {
        mins = (mins-1);    
        minFix(mins);   
    }

}

minUp 和 minDown 分别由向上和向下箭头调用,显示 mins 的文本框的 ID 为 mins。

我确定我错过了一些简单的东西,但我现在无法弄清楚,所以任何帮助将不胜感激。

4

1 回答 1

1

这与您要附加的零有关。它使您的数字变成八进制数,因此当您重新读取它时,它不会被读取为十进制数。看看 parseInt 是如何工作的,你就会明白了。您需要在解析之前删除前导零。

在此处向下滚动 parseInt 函数:http ://www.javascripter.net/faq/convert2.htm

所以这条线var mins = parseInt(document.getElementById("mins").value);

应该

var mins = parseInt(document.getElementById("mins").value.replace(/^0+/,""));

哦,欢迎来到 Stack!请不要忘记对您认为最好的答案进行投票,并为您认为正确的答案打上绿色复选标记。

于 2012-04-04T19:11:54.550 回答