Как передавать свой аргумент в функцию? Пишу свой плагин для форм отправки. Возник вопрос, как передавать свой аргумент, как это делается например в методе jquery$('tut selector').each(function(item) {
})
Тут автоматом как-то передается аргумент item, который я могу использовать.;(() => {
class Validation {

constructor(options) {
this.fields = options.fields;
this.formElement = document.querySelector(options.formSelector);
this._checkRules = {
phone: /^[+]*[(]{0,1}[0-9]{1,4}[)]{0,1}[-\s\./0-9]*$/,
mail: /[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/,
}
}
init() {
if(Object.prototype.toString.call(this.fields) === '[object Array]') {
this.fields.map((item) => {
document.querySelector(item.fieldSelector).addEventListener('blur', (e) => {
//target - DOM элемент, поле
//item.text - Условие, по которому нужно проверять строку или регулярное выражение
//item.required - Обязательное ли поле
let failCallback = item.onFail ? item.onFail : this.onFail;
const target = event.target;
if(this.fieldTest(target, item.test, item.required) === false) {
failCallback();
} else {
onSuccess();
}

})
})
} else {

}
}
onSuccess() {
}
onFail() {

}

fieldTest(field, test = 'default', required = false) {
if(required && field.value == '') {
return false;
}
switch (test) {
case 'phone':
return this._checkRules.phone.test(field.value);
break;
case 'mail':
return this._checkRules.mail.test(field.value);
break;
case 'message':
return field.value.length {
alert('Коллбэк сработал');
}
},
{
fieldSelector: '.mail',
test: 'mail'
},
{
fieldSelector: '.ms',
test: 'message'
},
]
}).init();
})();

28 Сен 2019 в 19:49
296 +1
0
Ответы
1

Для того чтобы передать свой аргумент в функцию, можно воспользоваться замыканием и использовать стрелочные функции ES6. В вашем случае, вы можете передать аргумент в методе map при обработке массива fields. Также, вы можете передавать аргумент в колбэк функцию addEventListener с помощью замыкания:

Пример передачи своего аргумента в функцию:

this.fields.map((item) => {
const customArgument = 'my custom argument';
document.querySelector(item.fieldSelector).addEventListener('blur', (e) => {
// здесь вы можете использовать customArgument или другие свои аргументы
// ...
});
});

Таким образом, вы можете создать и использовать свои собственные аргументы внутри функций и передавать их в нужные методы или колбэк функции.

19 Апр 2024 в 19:02
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир