Вызов функции jQuery, названной в переменной - программирование
Подтвердить что ты не робот

Вызов функции jQuery, названной в переменной

У меня есть несколько функций jQuery, таких как function setOne(); setTwo(); setThree();

и переменную var number, которая соответствует соответственно "один", "два", "три".

Как я могу вызвать функцию "setOne()", когда числовые значения "один", функция "setTwo", когда значения "два" и т.д....?

Большое вам спасибо заранее. Любая помощь будет оценена.

4b9b3361

Ответ 1

Если у вас есть функция в глобальной области (на объекте окна), вы можете сделать:

// calls function setOne, setTwo, ... depending on number.
window["set" + number](); 

И использование eval позволит вам запускать функции в локальной области:

eval("set" + number + "()");

Когда JavaScript eval() не злой?

Ответ 2

Создайте карту name -> function:

var funcs = {
    'one': setOne,
    'two': setTwo
    /*...*/
};

Затем вы вызываете функцию с помощью:

funcs[number]();

Ответ 3

Если переменная детализирует фактическое имя функции JQuery и вы хотите применить эту функцию к элементу DOM, например "body", вы можете сделать следующее:

 $('body')['function-name']('params');

Ответ 4

Если ваши функции находятся в глобальном масштабе, попробуйте:

function setOne() {
  console.log('setOne called');
}
function setTwo() {
  console.log('setTwo called');
}
function setThree() {
  console.log('setThree called');
}

var number, funcName;

number = 'one';
funcName = 'set' + number.charAt(0).toUpperCase() + number.slice(1);
window[funcName](); // output: setOne called

number = 'two';
funcName = 'set' + number.charAt(0).toUpperCase() + number.slice(1);
window[funcName](); // output: setTwo called

number = 'three';
funcName = 'set' + number.charAt(0).toUpperCase() + number.slice(1);
window[funcName](); // output: setThree called

Ответ 5

Почему у вас есть три функции для этого?

var number;
function setNumber(n) {
    number = n;
}

setNumber(1) будет устанавливать число до 1

setNumber(2) установит номер в 2

ЭСТ

Ответ 6

Проще всего это:

function hello(){
    alert("hello");
}
var str = "hello";
eval(str+"()");