我正在通过 JSHint 运行一些代码,但我不断收到以下错误:
不要在循环中创建函数。
我尝试关闭“关于循环内的函数”的警告,这对阻止报告错误没有任何作用。我决定重构代码,在这里使用 JSHint 的建议,http://www.jshint.com/options/但我仍然收到错误。我希望有人可以帮助我稍微重构这段代码,以便它通过。这是该函数的副本:
function setSounds(parent) {
var i,
l;
parent.getElements('.sound').each(function (elem) {
var soundEvents = [];
if (elem.get('fk_click_sound')) {
soundEvents.push('click');
}
if (elem.get('fk_mouseover_sound')) {
soundEvents.push('mouseenter');
}
if (soundEvents.length !== 0) {
for (i = 0, l = soundEvents.length; i < l; i += 1) {
elem.addEvent(soundEvents[i], (function () {
return function (e) {
FKSoundAIR(FKSoundStd[this.get('fk_' + e.type + '_sound')]);
};
})(elem), false);
}
}
});
}
我正在使用 MooTools。此函数的目的是传递一个父元素,然后将声音事件应用到所有具有“声音”类的子元素。我正在使用自定义 HTML 属性,例如“fk_click_sound”来向函数提供附加信息。我从http://blog.jbrantly.com/2010/04/creating-javascript-function-inside.html中选择了这种在循环中分配函数的方法。
您可以指出我的任何建议或资源都会很棒。谢谢!