0

在我的代码中,当i等于 5时myDate应该等于它。警报告诉我它们是相同的。我永远无法获得该功能return 1;

function checkForHoliday(date) {
    var myDate = new Date(date);
    myDate = myDate.getMonth() + "/" + myDate.getDate() + "/" + myDate.getFullYear();

    alert(myDate + "\n" + holidays[5]);

    for (i = 0; i <= 9; i++) {
       if (myDate == holidays[i]) {
           return 1;
           alert("got it");
       }       
    }

    return 0;
}

这是数组中的字符串的样子:

year = 2013
holidays[5] = "7/2/" + year

我的警报告诉我: 在此处输入图像描述

4

3 回答 3

1

我已经在本地运行了您的代码,并且可以正常工作。

我猜你的问题源于 Date.getMonth() 返回月份数字,其中 January === 0。这让很多人失望。

为了重新创建您的代码,我只是使用了 Chrome 的控制台。我还将您的警报更改为 aconsole.log以省去使用alert.

这是代码:

function checkForHoliday(date) {
  var myDate = new Date(date);
  myDate = myDate.getMonth() + "/" + myDate.getDate() + "/" + myDate.getFullYear();

  console.log(myDate + "\n" + holidays[5]);

  for (i = 0; i <= 9; i++) {
    if (myDate == holidays[i]) {
      return 1;
    }
  }

  return 0;
}

还有一个假的节日数组:

holidays = [0,1,2,3,4,'7/2/2013']

(这里的7其实对应8月)

运行checkForHoliday('8/2/2013')时,控制台会报告1. 代码成功匹配日期。

如果您实际上打算holiday[5]代表 2013 年 7 月 2 日,则需要设置holiday[5] = '6/2/2013'.

于 2013-08-28T18:00:35.600 回答
0

尝试使用这个,

 <script type="text/javascript">

    var startYear = parseInt(document.getElementById('startYear'), 10);
    var startMonth = parseInt(document.getElementById('startMonth'), 10) - 1; 
    var startDay = parseInt(document.getElementById('startDay'), 10);
    var myDate = new Date(startYear, startMonth, startDay);

</script>
于 2013-08-28T17:49:44.650 回答
0

将日期对象转换为所需格式的字符串。使用三等号运算符来测试相等性。

尝试:

if (myDate.toLocaleDateString() === holidays[i]) {
    return 1;
    alert("got it");
}
于 2013-08-28T17:50:16.313 回答