Javascript函数可以写入控制台,但不能返回值
Javascript function can write to console but not returning value
我在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;
}
})
}
}
您应该能够通过将其从更改来修复它
...
$.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;
...
注意:您还需要将返回变量外部化为if
条件。我已经证明了如何在其他情况下做到这一点。
如果要从$.each
循环返回一些内容,请将其分配给外部作用域中的变量return false;
以中断循环,然后在$.each();
调用后返回。
如果没有看到mPpopulateMealDayPlan,我的第一个猜测是,两次调用函数来获取值会改变mP的一些内部值。换句话说,如果我是对的,并且你注释掉console.log,应该会有一个返回值。你也可以做:
var returnObj = mP.populateMealDayPlan();
console.log(returnObj);
而不是在console.log 中调用mPpopulateMealDayPlan
如果不是这样的话,那么我认为我们需要更多的背景来提供帮助。
您的return语句从传递给each
方法的函数返回,而不是从fetchData
函数返回。grep函数在这里很有用:
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();
}
}
相关文章:
- JS可以在Chrome中工作,但不能在Firefox中工作
- WebRTC视频聊天可以在FF中使用,但不能在Chrome中使用
- jQuery Datepicker可以在Safari中工作,但不能在FF或Chrome中工作
- 三角库可以与firefox一起使用,但不能在Chrome中使用
- Highcharts可以从服务器加载数据,但不能更新
- 刷新GoogleMaps tile服务器可以使用JavaScript,但不能使用GWT
- node.js可以识别字符模式,但不能识别数字模式
- 如何在元素中处理鼠标事件,但不能在其子元素上处理
- Json到CSV下载,可以在chrome中工作,但不能在IE浏览器中工作
- jQuery$.post可以在chrome、safari中工作,但不能在FF中工作(声明成功回调函数未定义)
- Javascript可以在chrome中使用,但不能在其他浏览器中使用
- Iframe加载调整大小在Chrome中工作,但不能在IE或Firefox中工作
- Rails Production-可以工作,但不能编辑/删除/创建记录
- 能够在Highcharts中看到值,但不能看到图形
- jQuery插件可以由控制台触发,但不能由函数触发——为什么
- Javascript函数可以写入控制台,但不能返回值
- 禁用以显示我的应用程序不工作的控制台(F12可以,但不能禁用CLT+SHFT+I)
- jwplayer getDuration在chrome控制台工作,但不能在c#与IJavaScriptExecutor
- 组件ID可以在Chrome控制台通过$find找到,但不能在外部注入代码中找到
- 在angular js中打印JSON,我可以在控制台看到,但不能打印相同的