我写了一些JavaScript,基本上可以根据时间显示不同的像素。我已经编写了代码(至少几秒钟),并且工作正常,但我在简化它时遇到了麻烦,所以我不必一遍又一遍地输入(差不多)相同的代码。
以下是我的代码示例:
var getTime = function() {
var date = new Date();
var hours = date.getHours();
var mins = date.getMinutes();
var secs = date.getSeconds();
if (secs==0) {
for (var s=1; s < 60; s++) {
$("#s" + s).removeClass('display');
};
} else if (secs == 1) {
for (var s=1; s < (secs+1); s++) {
$("#s" + s).addClass('display');
};
} else if (secs == 2) {
for (var s=1; s < (secs+1); s++) {
$("#s" + s).addClass('display');
};
} else if (secs == 3) {
for (var s=1; s < (secs+1); s++) {
$("#s" + s).addClass('display');
};
.........(cont.)
} else if (secs == 59) {
for (var s=1; s < (secs+1); s++) {
$("#s" + s).addClass('display');
}
}
};
答案 0 :(得分:3)
如果我理解正确,您会尝试根据秒数显示#s
。简单的解决方案是清除所有并重新设置显示。
var getTime = function() {
var date = new Date();
var hours = date.getHours();
var mins = date.getMinutes();
var secs = date.getSeconds();
//Hide all ids starting with 's'
$('[id^=s]').removeClass('display');
for (var s=1; s < (secs+1); s++) {
$("#s" + s).addClass('display');
}
};
答案 1 :(得分:1)
(更新以确保行为正确,即使我们错过了勾号)
var getTime = function() {
var date = new Date();
var hours = date.getHours();
var mins = date.getMinutes();
var secs = date.getSeconds();
for (var s = 0; s < 60; s++) {
var elements = $("#s" + s);
elements.removeClass('display');
if (s <= secs) {
elements.addClass('display');
}
}
}
答案 2 :(得分:0)
我可能会遗漏一些东西,因为你不知道为什么你有59个else
看起来相同的条件
var getTime = function() {
var date = new Date();
var hours = date.getHours();
var mins = date.getMinutes();
var secs = date.getSeconds();
if (secs==0)
for (var s=1; s < 60; s++)
$("#s" + s).removeClass('display');
else
for (var s=1; s < (secs+1); s++)
$("#s" + s).addClass('display');
};
答案 3 :(得分:0)
对于超过0的秒,您的逻辑总是相同的
if (secs < 1) {
for (var s=1; s < 60; s++) {
$("#s" + s).removeClass('display');
};
} else {
for (var s=1; s < (secs+1); s++) {
$("#s" + s).addClass('display');
};
}