我想将12AM到11PM插入一个选择标签,但在我的循环中,有两个东西丢失,12AM和12PM。
for (i = 1; i < 12; i++) {
var am = '<option>' + i + ':00 AM</option>';
$('#time').append(am);
}
for (i = 1; i < 12; i++) {
var pm = '<option>' + i + ':00 PM</option>';
$('#time').append(pm);
}
答案 0 :(得分:1)
function convert24HourTo12Hour(h) {
return (h + 11) % 12 + 1;
}
for (i = 0; i < 24; i++) {
$('#time').append(
'<option>' + convert24HourTo12Hour(i) + ':00 ' + (i < 12 ? 'A' : 'P') + 'M</option>'
);
}
(i + 11) % 12 + 1
部分将0转换为12,将13-23转换为1-11。
下一组括号是“条件表达式”,并根据A
的值选择P
或i
。
答案 1 :(得分:0)
在第一个循环中,
for (i = 1; i < 12; i++) {
应该是:
for (i = 1; i <= 12; i++) {
该中间位是延续条件,并且在您的变体中,它仅在小时 小于12时继续,换句话说,从1到11(包括1和11)。
如果你真的想要午夜作为第一个条目,你必须特别对待它,如:
var opt = '<option>12:00 midnight</option>';
$('#time').append(opt);
for (i = 1; i < 12; i++) {
opt = '<option>' + i + ':00 AM</option>';
$('#time').append(opt);
}
opt = '<option>12:00 noon</option>';
$('#time').append(opt);
for (i = 1; i < 12; i++) {
opt = '<option>' + i + ':00 PM</option>';
$('#time').append(opt);
}
注意到我已经用#34;正确的&#34;取代了错误的上午12点/下午。指定 - 你可能不同意这种立场,但我认为它更可取。如果您想使用原始名称,只需更改文本即可。
您可能还想考虑更短的内容:
$('#time').append('<option>12:00 midnight</option>');
for (i = 1; i < 12; i++) {
$('#time').append('<option>' + i + ':00 AM</option>');
}
$('#time').append('<option>12:00 noon</option>');
for (i = 1; i < 12; i++) {
$('#time').append('<option>' + i + ':00 PM</option>');
}
因为除了设置内容之外,您实际上不需要保留opt
。
如果你不想在某些方面(比如日期和时间)做很多工作,那么我就会失职,因此找到让生活更轻松的事情可能是值得的。 ,例如moment.js
。这将大大减轻日期和时间花费的费用,和它带有格式,所以你可以简单地使用类似的东西:
for (var i = 0; i < 24; i++) {
var m = new moment(new Date(2015,0,1,i,0,0));
$('#time').append(m.format("<option>h:00 A</option>"));
}
虽然这会在中午/午夜恢复到我认为的错误行为。