我正在构建一个使用setInterval
和new Date()
每秒更新一次的时钟。但是,我无法使用和数组将一位数字更改为两位数字。例如,我想要5小时,9分钟和5秒显示为05:09:05(在一位数字的前面添加零)。由于某些奇怪的原因,我的数组带有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>
答案 0 :(得分:4)
您忘记输出数组而不是单个 h , m , s 。
// isdigit example (C++)
#include <iostream> // std::cout
#include <string> // std::string
#include <locale> // std::locale, std::isdigit
#include <sstream> // std::stringstream
int main ()
{
std::locale loc;
std::string str="1776ad";
if (isdigit(str[0],loc))
{
int year;
std::stringstream(str) >> year;
std::cout << "The year that followed " << year << " was " << (year+1) << ".\n";
}
return 0;
}
&#13;
$(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);
});
&#13;
答案 1 :(得分:0)
当你把字符串放在数组中时,它不会直接放置对象,而是放置对象的副本。
然后在显示时,不是直接使用h
,m
和s
(未修改的原始对象),而是显示数组中的项目({{ 1}},...)。
我希望它有所帮助。