可以't在chrome控制台中从带名称空间的javascript函数获取返回值
Can't get return value in chrome console from namespaced javascript function
我想使用javascript从我的梦幻运动队网站上的一个表中获取值(并最终求和)。我还想正确命名这个名称,以获得良好的形式和实践。
下面的工作代码试图过滤掉空行,留下一个我关心的DOM表行数组。
playerRow = jQuery(".pncPlayerRow");
players = []
var realRows = function(){
playerRow.each(function(){
if (jQuery(this).eq(0).children().eq(7).text() != "--"){
players.push(this);
}
})
return(players); // returns array of non-empty <tr>
}
realRows();
现在,当我尝试命名它时,我得到了一个未定义的返回值。这是我的代码:
FantasyStats = {}
FantasyStats.collect = function(){
var playerRow = jQuery(".pncPlayerRow");
var players = []
var realRows = function(){
playerRow.each(function(){
if (jQuery(this).eq(0).children().eq(7).text() != "--"){
players.push(this);
}
})
return(players);
}
realRows();
}
FantasyStats.collect()
我做错了吗?有什么建议吗?
如果希望FantasyStats.collect
返回realRows
的返回值,则需要添加一个return
:
// ...
return realRows(); // <== On this line at the end of `collect`
}
FantasyStats.collect()
附带说明:您的代码似乎依赖于隐式全局变量的恐怖(在第一个版本中,您没有声明playerRow
或players
;在第二个版本中不声明FantasyStats
)。强烈建议您声明变量。你可以使用严格模式来强化这个习惯。
旁注二:通常我主张人们编写更多函数(例如,取大函数并将其分解为一系列小函数),但在这种情况下,我并不认为realRows
函数对你有任何帮助:
var FantasyStats = {};
FantasyStats.collect = function(){
var playerRow = jQuery(".pncPlayerRow");
var players = [];
playerRow.each(function(){
if (jQuery(this).children().eq(7).text() != "--"){
players.push(this);
}
});
return players;
};
FantasyStats.collect();
我添加了var
,还有几个缺失的分号,在jQuery(this)
之后的.eq(0)
从来没有任何用途(根据定义,jQuery(this)
创建的jQuery集已经中只有一个元素)。
更进一步,您正在重新设计jQuery的filter
函数,您可以使用它:
var FantasyStats = {};
FantasyStats.collect = function(){
return jQuery(".pncPlayerRow").filter(function(){
return jQuery(this).children().eq(7).text() != "--");
}).get();
};
FantasyStats.collect();
(注意末尾的.get()
,将jQuery集合转换为普通数组。)
或者这个稍微容易调试的版本:
var FantasyStats = {};
FantasyStats.collect = function(){
var players = jQuery(".pncPlayerRow").filter(function(){
return jQuery(this).children().eq(7).text() != "--");
}).get();
return players;
};
FantasyStats.collect();
解决此问题的两种方法:
1/。
FantasyStats = {}
FantasyStats.collect = function(){
var playerRow = jQuery(".pncPlayerRow");
var players = []
var realRows = function(){
playerRow.each(function(){
if (jQuery(this).eq(0).children().eq(7).text() != "--"){
players.push(this);
}
})
return players;
}
return realRows(); // return return of realRows => players Array.
}
FantasyStats.collect()
2/。
FantasyStats = {}
FantasyStats.collect = function(){
var playerRow = jQuery(".pncPlayerRow");
var players = []
var realRows = function(){
playerRow.each(function(){
if (jQuery(this).eq(0).children().eq(7).text() != "--"){
players.push(this);
}
})
}
realRows();
return players; // return players array after it was filled by realRows function
}
FantasyStats.collect();
我建议第二个。
相关文章:
- JavaScript名称空间和对象创建
- 在javascript中使用命名空间
- javascript中的命名空间,IDE中支持代码完成/内容辅助's
- 如何使用javascript命名空间
- 转换自的JavaScript命名空间
- 什么's当前命名空间/类中JavaScript子命名空间/类的语法
- 静态html中图像之间的空间在javascript中消失
- 在Firebug控制台中监视javascript命名空间变量
- 在Alfresco中动态创建空间/文件夹的Javascript;t工作正确
- 用自定义javascript全局命名空间替换窗口
- 怎么了?通过字符串定义 JavaScript 命名空间
- Javascript 命名空间/最佳实践
- 处理此命名空间 JavaScript 结构的最佳方法是什么?
- 创建命名空间 Javascript 单例类的对象
- Xmlns 命名空间 JavaScript 删除
- 在我的命名空间JavaScript中使用this关键字
- 元素在正文中找不到足够的空间 - JavaScript 样式
- jQuery名称空间(JavaScript)是如何工作的
- 命名空间Javascript中的递归函数
- 构造函数-在简单的命名空间- Javascript