Вход

Просмотр полной версии : Functions declared within loops referencing an outer scoped variable may lead to conf


mrG0bliN
23.06.2017, 14:22
function jqFormSteps() {
var n = 0;
for (n = 0; n < 5; n++) {

var formStep = $('#form_step_one> fieldset');
var stepNext = $('fieldset[data-step="' + n + '"]').next();
var stepPrev = $('fieldset[data-step="' + n + '"]').prev();

тут ошибка->> var stepFormAddClass = function(parm1, parm2) {
$(parm1).on('click', function(event) {
event.preventDefault();
formStep.removeClass('selector');
parm2.addClass('selector');
});
};
stepFormAddClass('#next' + n + '', stepNext);
stepFormAddClass('#prev' + n + '', stepPrev);
}
}
-------

ошибка: Functions declared within loops referencing an outer scoped variable may lead to confusing semantic.

как избавится от ошибки? понимаю что функция вошла в цикл и это не самый лучший способ что бы листать блоки туда сюда :(

j0hnik
23.06.2017, 14:55
функцию вынеси за цикл фор, зачем ее в цикл засунул?

mrG0bliN
23.06.2017, 15:29
function jqFormSteps() {
var n = 0;
var formStep = $('#form_step_one> fieldset');
var stepNext = $('fieldset[data-step="' + n + '"]').next();
var stepPrev = $('fieldset[data-step="' + n + '"]').prev();

var stepFormAddClass = function(parm1, parm2) {
$(parm1).on('click', function(event) {
for (n = 0;n < 5;n++) {
event.preventDefault();
formStep.removeClass('selector');
parm2.addClass('selector');
}
});
stepFormAddClass('#next' + n + '', stepNext);
stepFormAddClass('#prev' + n + '', stepPrev);
};
}

ошибка пропадает. но зато перестают перелистыватся туда сюда дивы
:(
и моя форма ломается

j0hnik
23.06.2017, 16:16
function jqFormSteps() {
var n = 0;
var formStep = $('#form_step_one> fieldset');
var stepNext = $('fieldset[data-step="' + n + '"]').next();
var stepPrev = $('fieldset[data-step="' + n + '"]').prev();

var stepFormAddClass = function(parm1, parm2) {
$(parm1).on('click', function(event) {
event.preventDefault();
formStep.removeClass('selector');
parm2.addClass('selector');
});
};
for (n = 0;n < 5;n++) {
stepFormAddClass('#next' + n + '', stepNext);
stepFormAddClass('#prev' + n + '', stepPrev);
}
}
попробуйте вот так, если не получится, сделайте тестовый пример здесь.

mrG0bliN
23.06.2017, 17:40
function jqFormSteps() {
var moveStep = {
nextStep: function() { $('[data-step]:visible').removeClass('selector').next().addClass ('selector'); },
prevStep: function() { $('[data-step]:visible').removeClass('selector').prev().addClass ('selector'); }
};
var stepFormAddClass = function(param1) {
$(param1).on('click', function(event) {
event.preventDefault();
if (param1 == '.js__nextButton') { moveStep.nextStep(); } else { moveStep.prevStep();}
});
};
stepFormAddClass('.js__nextButton');
stepFormAddClass('.js__prevButton');
}

переписал по новой. теперь работает переключение и нет ошибок