这个问题在概念上更具概念性,然后在代码方面具体。
我有一个简单的JavaScript,可以显示我公司是否开放以及我们在一周中任何一天的开放时间。
jQuery(document).ready(function($) {
var d = new Date();
var curDay = d.getDay();
$('#curDay').html(curDay);
if (curDay==1 || curDay==4) {
$('#hours-operation').html("We are open today<br>from 11am - 6pm");
} else if (curDay==3 || curDay==5) {
$('#hours-operation').html("We are open today<br>from 11am - 9pm");
} else if (curDay==0 || curDay==6) {
$('#hours-operation').html("We are open today<br>from 10am - 6pm");
} else {
$('#hours-operation').html("We are closed today<br><br>");
}
});
最近,由于恶劣的天气,我们已定期关闭。有没有办法让外部实体更改脚本,例如表单输入?并且当时钟移动到第二天时将其自行移除,从而将脚本重置为其原始状态?最好的方案是根本不编辑脚本本身。
答案 0 :(得分:2)
您需要的不仅仅是javascript / jquery才能实现这一点,这是一个表单,某种后端存储数据和您的javascript将查询的Web服务。
答案 1 :(得分:2)
保存数据库中的外部实体,当您尝试显示此列表时,您可以进行ajax调用并获取是否有任何天未打开并进行设置。我在代码中将其描述为注释。 在您的数据库中,您需要保存您将通过表单获得的信息:
date, start time,endtime
然后在你的javascript中:
jQuery(document).ready(function($) {
// make an ajax call and get data with current day.
// check if it has any data for this day
if (you have data){
set in your hours-operation
}else
{
var d = new Date();
var curDay = d.getDay();
$('#curDay').html(curDay);
if (curDay==1 || curDay==4) {
$('#hours-operation').html("We are open today<br>from 11am - 6pm");
} else if (curDay==3 || curDay==5) {
$('#hours-operation').html("We are open today<br>from 11am - 9pm");
} else if (curDay==0 || curDay==6) {
$('#hours-operation').html("We are open today<br>from 10am - 6pm");
} else {
$('#hours-operation').html("We are closed today<br><br>");
}
}
});
我认为这是有道理的:)
答案 2 :(得分:0)
我不确定是否全部了解。然而... 是的,您可以覆盖此代码。
如果您不想更改脚本,则需要添加覆盖行为的脚本。
像:
$(function({
/*exec your code*/
if (/* extraordinary condition true or false? */) {
$('#hours-operation').html("We are closed today<br><br>");
}
});
但最好在函数内或条件内缩进代码:
var dayOpen = function(){
/*your code*/
}
$(function({
if (/* extraordinary condition true or false? */) {
dayOpen();
/*or your code*/
}else{
$('#hours-operation').html("We are closed today<br><br>");
}
});
无论如何我同意其他用户。您需要一些动态信息来构建/* extraordinary condition true or false? */
。
对我来说,有两种主要方式:
使用您可以通过ajax调用的服务端API(PHP,JAVA,RUBY,ecc ...)来了解您的业务今天是否已开启:
$(function(){
$.ajax({
url : /* your API link*/,
dataType : "json", /*[see example response at the and of the code] */
success : function(res){
if(res.problem) return $('#hours-operation').html(res.message+"<br><br>");
/*your normal code here*/
}
})
})
响应示例:
{
problem : true, //or false if there are no problem with opening
message : "Today we are closed for inclement weather"
}
在FTP中使用静态文件。在这种情况下,你只需要通过ajax(HEAD)调用你的网站空间内的一个文件,如果这个文件存在(响应不是404),javascript知道“今天有一个特别的结束”:
$(function(){
$.ajax({
type : "head",
url : /* link to your file*/,
success : function(res){
$('#hours-operation').html("Today we are extraordinarily closed<br><br>");
},
error : function(){
/*no file NO PROBLEM*/
/* your normal code here */
}
})
})
您的文件可以是JSON或TXT以获取更多信息,我的情况最简单,服务器工作量最低(HEAD CALL not GET)
我不是英语...所以我的英语不好,因为现在我需要去,我无法阅读和纠正我的错误,我希望你能理解。