1

カスタムJqueryタイマーを作成しました。しかし、私は小さな問題に直面しています。それが私のために働いていないことを私は知りません。以下は私のコードです。

  function show(Hos, mins, secds) {

        var hours = Hos;
        var minutes = mins;
        var seconds = secds;
        var dn = "AM";
        if (hours > 12) {
            dn = "PM"
            hours = hours - 12
        }
                    if (hours == 0)
                        hours = 12

        document.getElementById('<%= Label1.ClientID %>').innerHTML = hours + ":" + minutes + ":" + seconds + " " + dn
        if (parseInt(seconds) == 59) {
            seconds = 0;
            if (parseInt(minutes) == 59) {
                if (parseInt(hours) == 12) {
                    hours = 0;
                } else {
                    hours = parseInt(hours) + 1;
                }
            } else {

                minutes = parseInt(minutes) + 1;
            }
        } else {
            seconds = parseInt(seconds) + 1;

        }


        setTimeout("show('" + hours + "','" + minutes + "','" + seconds + "'" + " )", 1000)
    }

このコードは正常に機能しています。c#を使用してコードビハインドから初めて時間、分、秒を渡します。今、私の問題は、秒が9未満、分が9未満、時間が9未満の場合に「 0 」を追加したいということです。 9.次のトリックを試しましたが、なぜそれが機能しないのかわかりません。

if (seconds <= 9) {
                seconds = '0' + parseInt(seconds);
            }

私を助けてください..実際に私がこれを試したときに何が起こるか。0を9までの秒で連結しますが、9になると、1から再起動します。これが問題です。

4

2 に答える 2

1

seconds = '0' + parseInt(seconds)は文字列であるため、文字列の加算を行い'0'ます。

JavaScript で数値に文字列を追加すると、数値が文字列に追加されます。

0 の引用符を削除すると、数字のように扱われます。

PSこれはあなたがクラックしようとしている問題だと思います

于 2012-08-02T08:05:10.870 に答える
0

次のようなトリックを使用して、この問題を解決しました。

function show(Hos, mins, secds) {

        var hours = Hos;
        var minutes = mins;
        var seconds = parseInt(secds, 10);


        if (hours == 0)
            hours = 12

        if (parseInt(seconds, 10) < 10) {
            seconds = "0" + parseInt(seconds, 10);
        }
        if (parseInt(hours, 10) < 10) {
            hours= "0" + parseInt(hours, 10);
        }
        if (parseInt(minutes, 10) < 10) {
            minutes= "0" + parseInt(minutes, 10);
        }
        document.getElementById('<%= Label1.ClientID %>').innerHTML = hours + ":" + minutes + ":" + seconds + " "
        if (parseInt(seconds) == 59) {
            seconds = 0;
            if (parseInt(minutes, 10) == 59) {
                if (parseInt(hours, 10) == 24) {
                    hours = 0;
                } else {
                    hours = parseInt(hours, 10) + 1;
                }
            } else {

                minutes = parseInt(minutes, 10) + 1;
            }
        } else {
               seconds = parseInt(seconds, 10) + 1;
       }
        setTimeout("show('" + hours + "','" + minutes + "','" + seconds + "'" + " )", 1000)
    }
于 2012-08-02T09:15:58.777 に答える