Я запускаю некоторый код через 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.
Любые предложения или ресурсы, на которые вы можете указать мне, были бы великолепны. Спасибо!