无限循环串联问题
infinite loop concatenation issue
我想在select标记中插入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);
}
http://jsfiddle.net/mzswo9xt/
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。
下一组括号是一个"条件表达式",根据i
的值选择A
或P
。
在第一个循环中,
for (i = 1; i < 12; i++) {
应该是:
for (i = 1; i <= 12; i++) {
中间位是连续条件,在您的变体中,它只在小时小于12时继续,换句话说,包括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);
}
注意到我已经用"正确"的名称取代了错误的上午12点/下午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>"));
}
尽管这又回到了我所认为的中午/午夜的错误行为。
相关文章:
- 使用滚动溢出-x进行无限循环
- 从index.html调用函数,该函数无限循环
- 使用jQuery无限循环播放HTML页面幻灯片
- Grunt任务没有加载,获得无限循环
- 如何在不进入无限循环的情况下将网站重定向到Facebook画布URL
- Backbone+RequireJS+Mediator模式导致视图逻辑短路和无限循环
- jQuery无限循环,动画化许多项目
- 如何避免试图用php+jquery显示php起始页的无限循环
- 6502仿真增强型基本无限循环$C000至$E0ED
- Angular ngRoute导致无限循环和堆栈溢出
- Jquery:无限循环和暂停
- 数组数组:无限循环
- MeteorJS使用流星调用和流星方法时的无限循环
- 如何无限循环数据集字符串
- jquery在无限循环中运行
- 遍历对象会导致无限循环
- 无限循环串联问题
- 简单的 do/while 循环无限循环问题
- JavaScript范围问题导致无限循环
- 无限循环的问题