Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 变量,等于一个月中的数字日_Javascript - Fatal编程技术网

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)。好的点。解救:)