Javascript 返回参数以重用工时计算功能
我正在开发一个可以提供当地餐馆信息的应用程序。所有的餐厅都有营业时间。只有一些餐馆有欢乐时光。我不想两次使用相同的代码块,而是希望能够重用我的函数来确定开放时间、当前关闭时间或今天关闭时间,以确定快乐时间和工作时间 问题是,我想为每个人创建不同的消息 正如您所知,我的时间是作为一个对象从我的数据库中输入的(例如:Javascript 返回参数以重用工时计算功能,javascript,function-parameter,Javascript,Function Parameter,我正在开发一个可以提供当地餐馆信息的应用程序。所有的餐厅都有营业时间。只有一些餐馆有欢乐时光。我不想两次使用相同的代码块,而是希望能够重用我的函数来确定开放时间、当前关闭时间或今天关闭时间,以确定快乐时间和工作时间 问题是,我想为每个人创建不同的消息 正如您所知,我的时间是作为一个对象从我的数据库中输入的(例如:object{Fri_c:“4:00am”、Fri_o:“3:00pm”、Mon_c:“4:00am”、Mon_o:“3:00pm”、Sat_c:“4:00am”…},因此我的很多函数都
object{Fri_c:“4:00am”、Fri_o:“3:00pm”、Mon_c:“4:00am”、Mon_o:“3:00pm”、Sat_c:“4:00am”…}
,因此我的很多函数都是用来简单地重新格式化这些信息,以便可以进行计算
以下是我目前的代码:
var bizHours = marker.businesshour,
hpyHours = marker.happyhour;
if (bizHours) {
var isOpen,
isClosed,
isClosedToday;
openClosed(bizHours, isOpen, isClosed, isClosedToday);
};
if (hpyHours) {
var isHappyHour,
notHappy,
noHappyHour;
openClosed(hpyHours, isHappyHour, notHappy, noHappyHour);
};
function openClosed(hours, opened, notopen, closedtoday) {
//CALCULATE SECONDS OPEN
var Open = hours[openKey],
splitOpenTime = Open.split(':'),
secondSplitOpenTime = splitOpenTime[1].split(" "),
secondsOpen;
if (secondSplitOpenTime[1] == 'PM' && splitOpenTime[0] != '12') {
secondsOpen = (+splitOpenTime[0] + 12) * 60 * 60 + (+secondSplitOpenTime[0]) * 60
} else {
secondsOpen = (+splitOpenTime[0]) * 60 * 60 + (+secondSplitOpenTime[0]) * 60
}
//CALCULATE SECONDS CLOSED
var CloseTime = hours[closeKey],
splitCloseTime = CloseTime.split(':'),
secondSplitCloseTime = splitCloseTime[1].split(" "),
secondsClose;
if (secondSplitCloseTime[1] == 'AM' && splitOpenTime[0] != '12') {
secondsClose = (+splitCloseTime[0]) * 60 * 60 + (+secondSplitCloseTime[0]) * 60
} else {
secondsClose = (+splitCloseTime[0] + 12) * 60 * 60 + (+secondSplitCloseTime[0]) * 60
}
//CALCULATE CURRENT-TIME IN SECONDS
var convertTime = time.split(':'),
secondsTime = (+convertTime[0]) * 60 * 60 + (+convertTime[1]) * 60;
//CALCULATE CLOSE AND CURRENT TIME IF DAY-CHANGED
if (secondsClose < secondsOpen) {
secondsClose = secondsClose + 86400
} else {
secondsClose = secondsClose
}
if (secondsTime < secondsClose && secondsClose < secondsOpen) {
secondsTime = secondsTime + 86400
} else {
secondsTime = secondsTime
}
// RETURN/HOISE CALCULATED RESULTS TO THE PARAMATERS
if (secondsOpen < secondsTime && secondsTime < secondsClose) {
return opened = 'Open until ' + closeTime;
} else if (Open == '') {
return notopen = weekday;
} else {
return closedtoday = 'closed at' + closeTime;
};
};
var bizHours=marker.businesshour,
hpyHours=marker.happyhours;
国际单项体育联合会(工作时间){
var isOpen,
是封闭的,,
今天是封闭的;
开放关闭(营业时间、等时线、isClosed、isClosedToday);
};
如果(HPY小时){
var isHappyHour,
没什么,
不快乐;
开闭式(HPY小时、isHappyHour、notHappy、noHappyHour);
};
功能打开关闭(小时、打开、未打开、关闭今天){
//计算打开的秒数
var Open=小时[openKey],
splitOpenTime=Open.split(“:”),
secondSplitOpenTime=splitOpenTime[1]。拆分(“”),
第二种;
如果(secondSplitOpenTime[1]=“PM”&&splitOpenTime[0]!=“12”){
secondsOpen=(+splitOpenTime[0]+12)*60*60+(+secondSplitOpenTime[0])*60
}否则{
secondsOpen=(+splitOpenTime[0])*60*60+(+secondSplitOpenTime[0])*60
}
//计算关闭的秒数
var CloseTime=小时[closeKey],
splitCloseTime=CloseTime.split(“:”),
secondSplitCloseTime=splitCloseTime[1]。拆分(“”),
二次硬化;
如果(secondSplitCloseTime[1]=“AM”&&splitOpenTime[0]!=“12”){
secondsClose=(+splitCloseTime[0])*60+(+secondSplitCloseTime[0])*60
}否则{
secondsClose=(+splitCloseTime[0]+12)*60*60+(+secondSplitCloseTime[0])*60
}
//以秒为单位计算当前时间
var convertTime=time.split(“:”),
第二时间=(+convertTime[0])*60+(+convertTime[1])*60;
//如果日期发生变化,则计算关闭时间和当前时间
如果(秒时差<秒时差){
secondsClose=secondsClose+86400
}否则{
secondsClose=secondsClose
}
如果(第二时间
因此,在我的初始IF语句中,我设置了用作函数参数的变量,我希望函数能够返回/提升初始变量的值。在你的IF(bizHours)
/IF(hpyHours)
块中,你调用你的openClosed()
具有不同参数的函数,其中3个在此点为空
如果已将对象定义为“标记”,则无需执行以下操作:
var bizHours = marker.businesshour,
hpyHours = marker.happyhour;
而是检查if语句中每个参数的状态:
if(marker.businesshour){
...
};
if(marker.happyhour){
...
};
现在你必须考虑你想允许的状态。或者/或可能是真的,你可能不希望这取决于你想做什么。< /P>
对于不同的消息和重复使用相同的代码,我认为这是可行的:
var marker = {businesshour:null, happyhour:null};
function go()
{
if (marker.businesshour) {
alert("call your time function and pass marker.businesshour");
};
if (marker.happyhour) {
alert("call your time function and pass marker.happyhour");
};
return marker;
}
如果您在Firefox的控制台中加载它,并将marker.businesshour
设置为1,然后调用go();
它就会工作