Страницы

Поиск по вопросам

вторник, 18 февраля 2020 г.

Возникает ошибка при попытке вызова значения как функции

#javascript #jquery


Здравствуйте!

Скажите, пожалуйста, как можно исправить вот такую ошибку: Uncaught TypeError: y
is not a function



function test($t, y) {
	y($.trim($($t).val()));
}
function validateTest(z){
	alert(z);
}
$('.requed').on('change', function() {
  test('#'+$(this).attr('id'), 'validate'+$(this).attr('data-var'));
});

Я так понимаю ошибка возникает при попытке вызова значения как функции. Мне же нужно именно так. Полей у меня множество и исходя из значения ('validate'+значение из data-var) пришедшего из поля, будет вызываться определенная функция.


Ответы

Ответ 1



В зависимости от контекста исполняемой функции. Если все находится в контексте window, то можно написать так: function test($t, y) { var func = window[y]; func($.trim($($t).val())); } function validateTest(z){ alert(z); } $('.requed').on('change', function() { test('#'+$(this).attr('id'), 'validate'+$(this).attr('data-var')); });

В ином случае нужно заменить window на имя объекта-предка, содержащего эту функцию

Ответ 2



function test($t, y) { y($.trim($t.val())); } var validators = { Test: function validateTest(z) { console.log(z); } } $('.requed').on('change', function() { test($(this), validators[$(this).attr('data-var')]); });



Комментариев нет:

Отправить комментарий