gpt4 book ai didi

javascript - 如何根据开始和结束时间值创建动态表?

转载 作者:行者123 更新时间:2023-11-28 18:53:18 25 4
gpt4 key购买 nike

我有一个关于根据从一个页面传递到另一页面的值创建动态表的问题。在第一页上,我定义了开始时间、结束时间和增量间隔。因此,在我选择开始时间(假设为上午 8:00)并选择 session 长度 15 分钟后,将根据开始时间以 15 分钟为间隔创建结束时间。示例结束时间:上午 8:15、上午 8:30、上午 8:45...等等,直到我的最后一个值不能大于晚上 9:00。我可以选择这些值中的任何一个作为我的结束时间。在选择开始、结束和 session 长度这三个值后,我点击“提交”,将我带到第二页。在此页面上,我想根据传递的值创建我的表。这是我到目前为止的代码:

<form name="myForm" id="myForm" method="post" action="SeconfPage.cfm">
<fieldset>
<table>
<tr>
<th>Date</th>
<td><input type="date" id="datepicker" name="datepicker"/></td>
</tr>
<tr>
<th>Start Time</th>
<td><input type="text" id="stime" name="stime"/></td>
</tr>
<tr>
<th>Length of meeting</th>
<td>
<select name="meeting" id="meeting">
<option value="">--Select length--</option>
</select>
</td>
</tr>
<tr>
<th>End Time</th>
<td><input type="text" id="etime" name="etime"></td>
</tr>
<tr>
<td><input type="button" value="Create" onClick="getTable()"></td>
</tr>
</table>
</fieldset>
</form>

$(function() {
for (var i = 5; i <= 60; i += 5) {
$('#meeting').append('<option value="' + i + '">' + i + ' min' + '</option>');
}

function setEndTime() {
var meetingLength = parseInt($('#meeting').find('option:selected').val() || 0);
var selectedTime = $('#stime').timepicker('getTime');
if(selectedTime == null || selectedTime == ""){
alert("Please select the start time");
}else{
selectedTime.setMinutes(selectedTime.getMinutes() + parseInt(meetingLength, 10), 0);
$('#etime').timepicker('option', 'minTime', selectedTime);
$('#etime').timepicker('setTime', selectedTime);
}
}

$('#stime').timepicker({
'timeFormat':'h:i a',
'minTime': '8:00 AM',
'maxTime': '9:00 PM',
'step': 30
}).on('changeTime', function () {
setEndTime();
});

var count = 0;
$('#etime').timepicker({
'timeFormat':'h:i a' + ' (Slot '+count+')',
'minTime': '8:00 AM',
'maxTime': '9:00 PM',
'step': function () {
var val = parseInt($('#meeting').find('option:selected').val());
count++
return val;
},

});


$('#meeting').bind('change', function () {
setEndTime();
});
});

function getTable(){
document.myForm.submit();
}

我试图弄清楚如何以及什么是在第二页上创建表格的最佳方式。所有值都从我的表单传递。例如,我在第二页上有:

start time: 8:00am
end time: 5:00pm
meeting length: 20min

我的想法是创建一个像这样的 for 循环:

for(var i=stime; i<=etime; i+=meeting){
var tbl = "<tr><td>"+stime+"-"+i+"</td></tr>"
}

这样的东西会根据增量给我开始时间和下一个值。另外,创建表后将该表存储在 MySQL 数据库中的最佳方式是什么?我仍然不知道如何让它发挥作用。如果有人能给我提示什么是最好的方法以及我是否走在正确的道路上。

提前致谢。

最佳答案

请尝试以下操作(在第二页上创建表格):

<cfscript>
//existence and type checking
param name="FORM.datepicker" type="date";
param name="FORM.sTime" type="time";
param name="FORM.eTime" type="time";
param name="FORM.meeting" type="range" min=5 max=60;//minutes
//create currentTimeSlotBegin and lastTimeSlotBegin for cfloop
currentTimeSlotBegin = createDateTime(year(FORM.datepicker), month(FORM.datepicker), day(FORM.datepicker), hour(FORM.sTime), minute(FORM.sTime), 0);//this will be incremented, within cfloop, for each time slot
lastTimeSlotEnd = createDateTime(year(FORM.datepicker), month(FORM.datepicker), day(FORM.datepicker), hour(FORM.eTime), minute(FORM.eTime), 0);//used only for creating lastTimeSlotBegin below
lastTimeSlotBegin = dateAdd("n", FORM.meeting*-1, lastTimeSlotEnd);//subtract meeting length to get beginning of last time slot
</cfscript>
<table>
<tr>
<th>Time Slots for <cfoutput>#dateFormat(FORM.datepicker, "ddd, mmm dd, yyyy")#</cfoutput></th>
</tr>
<cfloop condition="currentTimeSlotBegin lte lastTimeSlotBegin">
<cfset currentTimeSlotEnd = dateAdd("n", FORM.meeting, currentTimeSlotBegin)>
<tr>
<td><cfoutput>#timeFormat(currentTimeSlotBegin, "hh:nn tt")#-#timeFormat(currentTimeSlotEnd, "hh:nn tt")#</cfoutput></td>
</tr>
<cfset currentTimeSlotBegin = dateAdd("n", FORM.meeting, currentTimeSlotBegin)>
</cfloop>
</table>

谢谢!

-亚伦

关于javascript - 如何根据开始和结束时间值创建动态表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34096866/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com