Вызов функции jQuery, названной в переменной
У меня есть несколько функций jQuery, таких как
function setOne();
setTwo(); setThree();
и переменную var number
, которая соответствует соответственно "один", "два", "три".
Как я могу вызвать функцию "setOne()", когда числовые значения "один", функция "setTwo", когда значения "два" и т.д....?
Большое вам спасибо заранее. Любая помощь будет оценена.
Ответы
Ответ 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+"()");