簡體   English   中英

無法獲取if語句以比較javascript中的兩個字符串

[英]Can't get if statement to compare two strings in javascript

在我的代碼中,當i等於5時, myDate應該等於它。 警報告訴我它們是相同的。 我永遠無法獲得return 1;的函數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

我的警報向我顯示了這一點: 在此處輸入圖片說明

我已經在本地運行您的代碼,並且可以正常工作。

我猜您的問題源於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' 6/2/2013 holiday[5] = '6/2/2013'

試試這個

 <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>

將日期對象轉換為所需格式的字符串。 使用三重等於運算符測試相等性。

嘗試:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM