Javascript 变量,等于一个月中的数字日
我正试图让它在一个月的每一天都起作用。它在没有| |的情况下工作。有没有办法让它和| |一起工作Javascript 变量,等于一个月中的数字日,javascript,Javascript,我正试图让它在一个月的每一天都起作用。它在没有| |的情况下工作。有没有办法让它和| |一起工作 <script> var now = new Date(); var day = ("0" + now.getDate()).slice(-2); var month = ("0" + (now.getMonth() + 1)).slice(-2); var today = (month) + "-" + (day) + "
<script>
var now = new Date();
var day = ("0" + now.getDate()).slice(-2);
var month = ("0" + (now.getMonth() + 1)).slice(-2);
var today = (month) + "-" + (day) + "-" + now.getFullYear();
var d = new Date();
var n = d.getDate();
if ((day == 13) ||
(day == 16) ||
(day == 19) ||
(day == 22)) {
document.getElementById("shift").innerHTML="A SHIFT" + " " + today;
}
else if ((day == 14) ||
(day == 17) ||
(day == 20) ||
(day == 23)) {
document.getElementById("shift").innerHTML="B SHIFT" + " " + today;
}
else ((day == 15) ||
(day == 18) ||
(day == 21) ||
(day == 24)) {
document.getElementById("shift").innerHTML="C SHIFT" + " " + today;
}
</script>
var now=新日期();
var day=(“0”+now.getDate()).slice(-2);
var month=(“0”+(now.getMonth()+1)).slice(-2);
var today=(月)+“-”+(日)+“-”+now.getFullYear();
var d=新日期();
var n=d.getDate();
如果((天==13)|
(日=16)||
(日=19)||
(日=22){
document.getElementById(“shift”).innerHTML=“A shift”+”+今天;
}
如果((天==14)|
(天=17)|
(日=20)||
(日=23){
document.getElementById(“shift”).innerHTML=“B shift”+”+今天;
}
否则((天==15)|
(天=18)|
(天==21)||
(日=24){
document.getElementById(“shift”).innerHTML=“C shift”+”+今天;
}
您的代码不会产生任何输出,因为存在语法错误。修复它似乎可以解决您的问题-
您不能在带有条件的else
后面跟随。只有当你说或者如果你说,这才有效
else ((day == 15) ||
(day == 18) ||
(day == 21) ||
(day == 24)) {
生成未捕获的语法错误:意外的标记{
,或类似的内容(取决于您的浏览器)
正确代码:
var now = new Date();
var day = ("0" + now.getDate()).slice(-2);
var month = ("0" + (now.getMonth() + 1)).slice(-2);
var today = (month) + "-" + (day) + "-" + now.getFullYear();
var d = new Date();
var n = d.getDate();
if ((day == 13) || (day == 16) || (day == 19) || (day == 22)) {
document.getElementById("shift").innerHTML = "A SHIFT " + today;
} else if ((day == 14) || (day == 17) || (day == 20) || (day == 23)) {
document.getElementById("shift").innerHTML = "B SHIFT " + today;
} else if ((day == 15) || (day == 18) || (day == 21) || (day == 24)) {
document.getElementById("shift").innerHTML = "C SHIFT " + today;
}
或者,您可以重构整个解决方案,使目标更具可读性
<script language="javascript" type="text/javascript">
// Get todays date and split it into dd, yyyy, mm components
var now = new Date();
var yyyy = now.getFullYear().toString();
var mm = (now.getMonth()+1).toString();
var dd = now.getDate().toString();
// Build padded_date in the format mm-dd-yyyy
var padded_date = (mm[1]?mm:"0"+mm[0]) + '-' + (dd[1]?dd:"0"+dd[0]) + '-' + yyyy;
alert(padded_date);
// Determine the only variable that changes in your latter code
var shift_alphabet;
switch (parseInt(dd)) {
case 13:
case 16:
case 19:
case 22: shift_alphabet = 'A';
break;
case 14:
case 17:
case 20:
case 23: shift_alphabet = 'B';
break;
case 15:
case 18:
case 21:
case 24: shift_alphabet = 'C';
break;
default: shift_alphabet = 'A' // Assumption
break;
}
// Using alerts because I don't have the HTML stuff
alert(shift_alphabet);
// Append shift alphabet to your output
// document.getElementById("shift").innerHTML= shift_alphabet + " SHIFT" + " " + padded_date;
//获取今日日期并将其拆分为dd、yyyy、mm组件
var now=新日期();
var yyyy=now.getFullYear().toString();
var mm=(now.getMonth()+1.toString();
var dd=now.getDate().toString();
//以mm dd yyyy格式生成填充的_日期
变量填充日期=(mm[1]?mm:“0”+mm[0])+'-'+(dd[1]?dd:“0”+dd[0])+'-'+yyyy;
警报(填充的_日期);
//确定后一个代码中更改的唯一变量
var移位字母表;
开关(parseInt(dd)){
案例13:
案例16:
案例19:
案例22:shift_字母='A';
打破
案例14:
案例17:
案例20:
案例23:shift_字母='B';
打破
案例15:
案例18:
案例21:
案例24:shift_字母='C';
打破
默认值:shift_alphabet='A'//假设
打破
}
//使用警报,因为我没有HTML内容
警报(移位字母);
//将移位字母附加到输出中
//document.getElementById(“shift”).innerHTML=shift\U字母表+“shift”+“”+padded\U日期;
我不太清楚你所说的没有| |的工作原理。你能提供一个工作示例吗?另外“一个班次”+“+今天
可以简称为“一个班次”+今天
对于像这样的简单排版错误,捕获它们的最佳方法是在JS解释器中查看控制台日志。所有现代浏览器都有内置的JS控制台,可用于调试和查看代码引发的错误。就是这样。我忘了“如果”。谢谢。@user1913733您还可以通过使用日期数组来简化if案例,如-[13,16,19,22].indexOf(day)>-1
。或者使用中的switch
语句。请注意day=+day;
用于将值设置为int而不是字符串。重构和消除重复片段的工作做得很好。但需要注意的一点是dd
是字符串。因此除非将其转换为int,否则它不会匹配您的情况。您只需将其设置为开关(+dd)
,然后它将警告正确的值(在我的情况下是B,在8/14)。好的点。解救:)