2017-08-15 127 views
0

我正在使用fullcalendar進行日常活動預訂。我想根據給定的日期進行一些日期的顏色更改。但它在整個日曆中呈現顏色。它使所有單元格的綠色。 下面是代碼,dayRender在給定日期不能在fullcalendar上正常工作

dayRender: function (date, cell) { 
    var disabledDates = ["2017-08-17","2017-08-23"]; 
    if ($.inArray(date.format("YYYY-MM-DD"),disabledDates)) { 
     //alert("success"); 
     cell.css("background-color", "green"); 
    } 
} 

回答

0

您沒有使用正確$.inArray。它不會返回truefalse,您將用它來解析if語句。相反,它會返回一個整數,表示它首先找到匹配值的索引。如果找不到匹配項,則返回-1。

你的問題發生,因爲JavaScript把0作爲鬆散等於false(即0 == false,但0 !== false),和所有其他號碼作爲鬆散等於true。因此,如果$.inArray返回除0以外的任何內容(即返回的值與第一個數組索引中的值相匹配時爲0),則您的if語句將視爲返回true,並因此更改背景顏色。這就是爲什麼它會爲2017-08-17之外的所有人改變它。

該版本將正常運行,測試該指數回報爲> -1設置背景顏色之前(整數,而不是一個布爾值):

dayRender: function(date, cell) { 
    var disabledDates = ["2017-08-17", "2017-08-23"]; 
    if ($.inArray(date.format("YYYY-MM-DD"), disabledDates) > -1) { 
    console.log(date.format("YYYY-MM-DD")); 
    cell.css("background-color", "green"); 
    } 
} 

進行更詳細的說明,請參見https://api.jquery.com/jQuery.inArray/

+1

非常感謝您的解釋。它的工作! – Jason

+0

沒問題,樂意幫忙。閱讀文檔總是值得的! :-) – ADyson

相關問題