Javascript 使用for循环而不是大型if语句通过jQuery追加信息
我有一个名为bike_main的表,其中包含“time”和“id”列,我使用这个表通过mySQL获取最忙的时间 MySQL 这将返回17个HTML格式 HTML 但是我不希望有一个非常大的if语句,而是希望它通过一个循环运行,这个循环将检测值并返回它各自的值。我试过: JavaScriptJavascript 使用for循环而不是大型if语句通过jQuery追加信息,javascript,jquery,mysql,sql,while-loop,Javascript,Jquery,Mysql,Sql,While Loop,我有一个名为bike_main的表,其中包含“time”和“id”列,我使用这个表通过mySQL获取最忙的时间 MySQL 这将返回17个HTML格式 HTML 但是我不希望有一个非常大的if语句,而是希望它通过一个循环运行,这个循环将检测值并返回它各自的值。我试过: JavaScript var hour = 1; var nextHour = hour+1; while (hour < 24) { console.log('hour is ' + hour); con
var hour = 1;
var nextHour = hour+1;
while (hour < 24) {
console.log('hour is ' + hour);
console.log('next hour is ' + nextHour);
if ($('#busierHour').text() == hour && hour > 12) {
console.log('IF STATEMENT RAN!!');
$('#busierHour').val(hour + '-' + nextHour + ' AM');
} else if ($('#busierHour').text() == hour && hour > 24) {
console.log('SECOND RAN');
$('#busierHour').val(hour + '-' + nextHour + ' PM');
}
hour++;
nextHour++;
}
var小时=1;
var nextHour=小时+1;
而(小时<24小时){
console.log('小时为'+小时);
console.log('下一个小时是'+nextHour);
if($('#busierHour').text()==小时和小时>12){
log('IF语句运行!!');
$('busierHour').val(hour+'-'+nextHour+'AM');
}else if($('#busierHour').text()==hour&&hour>24){
log(“第二次运行”);
$('busierHour').val(hour+'-'+nextHour+'PM');
}
小时++;
nextHour++;
}
运行上述JavaScript时,变量返回正确(小时为1,下一小时为2,小时为2,下一小时为3等),但控制台在记录“下一小时为18”后记录“IF STATEMENT RAN!!”。控制台应记录“第二次运行”。“#busierHour”中的任何文本更改都没有。使用关联数组
$hour = array(1=>'1-2am',2=>'2-3am',3=>'3-4am' .... , 17=>'5-6pm');
<h3 id="busierHour"><?php echo $hour[$row['h']]; ?></h3>
$hour=array(1=>'1-2am',2=>'2-3am',3=>'3-4am',17=>'5-6pm');
你可以计算它,比如
$('#busierHour').text(function(_, txt) {
var hour = parseInt(txt, 10);
var ampm = 'AM';
if ( hour > 12 ) {
ampm = 'PM'
hour = hour - 12;
}
return hour + ' - ' + (hour+1) + ampm;
});
如果在输出数据之前使用PHP进行操作,则更容易
$timestamp = strtotime( $datestring_from_db );
$ampm_date = date("h.i A", $timestamp);
下面是一个简单的计算
var busierHour = parseInt($('#busierHour').text());
var retString = '';
if(busierHour > 12){
retString = (busierHour - 12) + ' - ' + (busierHour - 11) + 'PM';
}
else{
retString = (busierHour) + ' - ' + (busierHour + 1) + 'AM';
}
让您的查询格式化结果:
SELECT
DATE_FORMAT(date, '%l')+
'-'+
DATE_FORMAT(DATE_ADD(date, INTERVAL 1 HOUR), '%l%p') AS h
FROM bike_main GROUP BY h ORDER BY count(*) DESC LIMIT 1
为什么在输出之前不先用PHP进行转换?@pmandell我在JavaScript/jQuery方面比在PHP方面经验丰富得多,所以我从来没有想到过这点。@GGio你能详细说明一下吗?是MySQL查询吗?
$timestamp = strtotime( $datestring_from_db );
$ampm_date = date("h.i A", $timestamp);
var busierHour = parseInt($('#busierHour').text());
var retString = '';
if(busierHour > 12){
retString = (busierHour - 12) + ' - ' + (busierHour - 11) + 'PM';
}
else{
retString = (busierHour) + ' - ' + (busierHour + 1) + 'AM';
}
SELECT
DATE_FORMAT(date, '%l')+
'-'+
DATE_FORMAT(DATE_ADD(date, INTERVAL 1 HOUR), '%l%p') AS h
FROM bike_main GROUP BY h ORDER BY count(*) DESC LIMIT 1