无法获取if语句来比较javascript中的两个字符串

时间:2013-08-28 17:42:18

标签: javascript if-statement

在我的代码中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

我的提醒显示给我: enter image description here

3 个答案:

答案 0 :(得分:1)

我已在本地运行您的代码,并使其正常运行。

我猜你的问题源于Date.getMonth()返回1月=== 0的月份数这一事实。这引起了很多人的关注。

要重新创建代码,我只需使用Chrome的控制台。我还将您的提醒更改为console.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'

答案 1 :(得分: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>

答案 2 :(得分:0)

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

尝试:

if (myDate.toLocaleDateString() === holidays[i]) {
    return 1;
    alert("got it");
}