2

手で値を入力できるようにするだけでなく、上下の矢印を使用して各セクションをインクリメントする制御された時間入力に使用される「ウィジェット」を作成しようとしています。正常に機能しました (12 から 1 および 59 から 1 などにループします) が、値が 10 未満のときに分を適切にフォーマットするセクションを追加すると、動作し始めました。

押し下げは、「10」、「09」、「0-1」と表示される 10 までは正常に機能します。

「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 はそれぞれ上向き矢印と下向き矢印で呼び出され、分を表示するテキスト ボックスの ID は mins です。

簡単なものが欠けていると確信していますが、今は理解できないので、どんな助けでも大歓迎です。

4

1 に答える 1

1

これは、追加するゼロに関係しています。数値を 8 進数にするため、再度読み取ると、10 進数として読み取られません。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+/,""));

スタックへようこそ!最良と思われる回答に賛成票を投じることを忘れないでください。正しいと思われる回答には緑色のチェックマークを付けてください。

于 2012-04-04T19:11:54.550 に答える