2012-02-21 51 views
0

我有一個JavaScript功能,可以輸出寫入到控制檯,但它無法返回值..JavaScript函數可以寫信給控制檯,但沒有返回值

fetchData: function(dateToFetch){ 
      if (mP.viewMode == 1){ 
       $.each(mealData.DailymPs, function(k, item){ 
        if(item.Date == formatDate(mP.chosenDate)){ 
         mP.DayPlan.mPDayData = item; 
         return mP.populateMealDayPlan(); 
        }  
       }) 
      } else if (mP.viewMode == 2){ 
      // debugger; 
       $.each(mealData.DailymPs, function(k, item){ 
        if(item.Date == (dateToFetch)){ 
         mP.DayPlan.mPDayData = item; 
         console.log(mP.populateMealDayPlan()); 
         var returnObj = mP.populateMealDayPlan(); 
         return returnObj; 
        }  
       }) 
      } 

     } 

回答

2

你應該能夠解決

... 
$.each(mealData.DailymPs, function(k, item){ 
    if(item.Date == (dateToFetch)){ 
     mP.DayPlan.mPDayData = item; 
     console.log(mP.populateMealDayPlan()); 
     var returnObj = mP.populateMealDayPlan(); 
     return returnObj; 
    }  
}) 
... 

... 
var returnObj = null; 
$.each(mealData.DailymPs, function(k, item){ 
    if(item.Date == (dateToFetch)){ 
     mP.DayPlan.mPDayData = item; 
     console.log(mP.populateMealDayPlan()); 
     returnObj = mP.populateMealDayPlan(); 
     return false; // break out of each() 
    }  
}) 
if(returnObj != null) return returnObj; 
... 

不:它通過對其進行更改e:您還需要將if條件中的返回變量外化。我已經演示瞭如何爲其他條件完成。

0

如果要從$.each循環中返回某些內容,請將其分配給外部作用域中的變量return false;以中斷循環,然後在調用$.each();之後將其返回。

0

沒有看到mP.populateMealDayPlan,我的第一個猜測就是調用函數兩次以獲取值更改mP的一些內部值。換句話說,如果我是對的,並且你註釋掉了console.log,那麼應該有一個返回值。你也可以這樣做:

var returnObj = mP.populateMealDayPlan();  
console.log(returnObj); 

,而不是在執行console.log

調用mP.populateMealDayPlan如果不是的話,那麼我想我們需要更多的背景下,以幫助。從功能

0

你return語句返回傳遞給each方法,而不是從你的fetchData功能。 grep function將在這裏有用:

fetchData: function(dateToFetch) { 
    var selector = mP.viewMode == 1 ? function(item) { return item.Date == formatDate(mP.chosenDate) } : function (item) { return item.Date == dateToFetch}; 

    var matched = $.grep(mealData.DailymPs, selector); 
    if (matched.length) { 
    var item = matched[0]; 
    mP.DayPlan.mPDayData = item; 
    console.log(mP.populateMealDayPlan()); 
    return mP.populateMealDayPlan(); 
    } 
} 
相關問題