2017-03-21 9 views
0

私はsetIntervalnew Date()を使用して毎秒更新する時計を作成しています。しかし、私は問題を1桁の数字を2桁の数字に変更し、配列を使用しています。たとえば、5時9分5秒を05:09:05(1桁の数字の前にゼロを追加する)と表示するとします。いくつかの奇妙な理由から、forループとifステートメントを使った配列はこれをしません。ここに私のコードは次のとおりです。配列を使用して文字列の長さを確認する

$(document).ready(function() { 
 
    /* Variables */ 
 
    var d; 
 
    var h; 
 
    var m; 
 
    var s; 
 
    var arr; 
 
    
 
    setInterval(function(){ 
 
    /* Get time every second */ 
 
    d = new Date(); 
 
    h = d.getHours(); 
 
    m = d.getMinutes(); 
 
    s = d.getSeconds(); 
 
    
 
    /* Check for character count */ 
 
    arr = [h, m, s]; 
 
    for (var i = 0; i < arr.length; i++) { 
 
     if (arr[i].toString().length == 1) { 
 
     arr[i] = '0' + arr[i]; 
 
     } 
 
    } 
 
    
 
    $('h1').html(h + ':' + m + ':' + s) 
 
    }, 1000); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<h1>12:00:00</h1>

答えて

4

あなたは出力に、アレイの代わりに、個々の時間メートルを忘れてしまいました。

$(document).ready(function() { 
 
    /* Variables */ 
 
    var d; 
 
    var h; 
 
    var m; 
 
    var s; 
 
    var arr; 
 
    
 
    setInterval(function(){ 
 
    /* Get time every second */ 
 
    d = new Date(); 
 
    h = d.getHours(); 
 
    m = d.getMinutes(); 
 
    s = d.getSeconds(); 
 
    
 
    /* Check for character count */ 
 
    arr = [h, m, s]; 
 
    for (var i = 0; i < arr.length; i++) { 
 
     if (arr[i].toString().length == 1) { 
 
     arr[i] = '0' + arr[i]; 
 
     } 
 
    } 
 
    
 
    //$('h1').html(arr[0] + ':' + arr[1] + ':' + arr[2]) 
 
    $('h1').html(arr.join(':')) // join instead of outputting individually 
 
    }, 1000); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<h1>12:00:00</h1>

+0

これは完全に機能します。ありがとう! –

0

あなたは配列内の文字列を入れたとき、それはオブジェクトを直接入れていない、それはオブジェクトのコピーを置きます。

次いで、それが表示されている場合、代わりに直接hmを用いるとs(変更されていない元のオブジェクト)は、配列(arr[0]、...)からのアイテムを表示します。

私はそれが役に立ちそうです。

関連する問題