2016-03-04 57 views
0

我有一個關於在Javascript中傳遞參數的問題,特別是作爲要解釋的moment.js的值。爲什麼傳入的參數在一個地方工作,但不在另一個地方工作?

我有這個功能:function showAll(howlate)

我想將howlate參數傳遞給函數 中的兩個地方,所以function showAll('oneWeekAgo')是它的調用方式。

所以,這個工程:

$.each(timesheets, function(i, timesheet) { 
    if (moment(timesheet.EndDate).isBefore(oneWeekAgo)) { 
     $("#demo").append('<span class="' + howlate + '">' + timesheet.UserName + '. </span><br>'); 
    } 
    }); 

,但失敗了,在那裏我試圖通過howlate到moment.js代碼:

$.each(timesheets, function(i, timesheet) { 
    if (moment(timesheet.EndDate).isBefore(howlate)) { 
     $("#demo").append('<span class="' + howlate + '">' + timesheet.UserName + '. </span><br>'); 
    } 
    }) 
isBefore

,一個WeekAgo是var代表一個moment.js值,var oneWeekAgo = moment().subtract(7, 'days');

是否有一些語法,我不知道或理解傳遞參數到一些JavaScript和d它是否被讀取?

或者我試圖做太多,有一個參數被變量替換變量值?

我想弄清楚,如果我犯了一個語法錯誤,或試圖做一些無法完成的事情。

+0

傳遞帶引號的字符串不同於傳遞具有該名稱的變量。 – Barmar

回答

2

的問題是,你引用oneWeekAgo當你調用showAll,所以它的傳遞該文字字符串,而不是oneWeekAgo變量的值。使用。

showAll(oneWeekAgo); 
+0

當我這樣做,沒有引號我獲取'Uncaught ReferenceError:twoWeeksAgo is not defined'。這是否表明我可能犯了一些其他錯誤? –

+0

這意味着你從未分配變量'twoWeeksAgo'。您需要先將其分配,然後才能將其作爲參數傳入。 – Barmar

+0

它在函數內部分配(實際上分配在ajax調用的'success'事件中)。這不是正確的地方嗎? –

1

我猜你的howLate變量沒有指向有效的moment()對象。

由於每moment docs

You can check whether the Moment considers the date invalid using moment#isValid. You can check the metrics used by #isValid using moment#parsingFlags, which returns an object.

可以檢查了一下是否有效調用

moment().isValid(); 
+0

謝謝你提醒我這個檢查,但它恢復正確。 的howLate參數是一個變量的名稱,是一個有效moment.js對象,如: 'VAR twoWeeksAgo =時刻()減(14「天」);' –

相關問題