名爲jQuery的功能,我有幾個jQuery的功能就像 function setOne(); setTwo(); setThree();
調用一個變量
和可變var number
分別值「一」,「二」,「三化」。
當數字值爲「1」時,如何調用函數「setOne()」,當數字值爲「2」時如何調用函數「setTwo」等...?
非常感謝你提前。任何幫助都會有所幫助。
名爲jQuery的功能,我有幾個jQuery的功能就像 function setOne(); setTwo(); setThree();
調用一個變量
和可變var number
分別值「一」,「二」,「三化」。
當數字值爲「1」時,如何調用函數「setOne()」,當數字值爲「2」時如何調用函數「setTwo」等...?
非常感謝你提前。任何幫助都會有所幫助。
如果你有在全球範圍內的功能(window對象),你可以做:
// calls function setOne, setTwo, ... depending on number.
window["set" + number]();
並使用eval
將允許你在本地範圍內運行函數:
eval("set" + number + "()");
到目前爲止最好的回答。 +1 – Tigraine 2011-12-21 10:32:32
最好的回答,我接受這個,簡單而有用,你確切地知道我的意思!謝謝!如果你想要你可以投我的問題。 – bobighorus 2011-12-21 10:39:02
'this [「set」+ number]();'不起作用。只有'setX'是任何'this'引用的屬性,但是如果'setX'是一個局部變量,則不會。 – 2011-12-21 10:43:22
創建name -> function
圖:
var funcs = {
'one': setOne,
'two': setTwo
/*...*/
};
然後調用與功能:
funcs[number]();
其實AndreasAL的答案是更好的答案。人們需要明白,在JavaScript中,一切都是字典,甚至函數只能在全局範圍字典中以這種方式訪問。 – Tigraine 2011-12-21 10:33:24
感謝您的答案Felix,但它好像是一個開關迭代。我需要一個像set + number +()這樣的自動解決方案,這意味着setOne(); 。我希望我很清楚。 – bobighorus 2011-12-21 10:34:56
@Tigraine:它只有在功能是全球性的時候才起作用,這通常不是一個好主意(全球名字空間污染)。 – 2011-12-21 10:37:16
爲什麼你對那三個功能?
var number;
function setNumber(n) {
number = n;
}
setNumber(1)
將設置數爲1
setNumber(2)
將設置數量爲2
ECT
謝謝你回答,但我認爲你不明白我的問題... :) – bobighorus 2011-12-21 10:40:05
前提是你的功能在全球範圍內,嘗試:
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
這麼簡單,因爲這是:
function hello(){
alert("hello");
}
var str = "hello";
eval(str+"()");
是的,但我必須調用一個函數! – bobighorus 2011-12-21 10:40:29
@bobighorus這個調用函數hello()...使用'var str =「One」;''eval(「set」+ str +「()」);'例如。你甚至可以通過這種方式設置*命名參數...''eval(「set」+ str +「(parameterName)」);' – 2011-12-21 10:52:40
如果變量詳細說明了JQuery函數的實際名稱和您想要將該功能應用於DOM元素(如「body」),您可以執行以下操作:
$('body')['function-name']('params');
對我來說看起來像普通的JavaScript函數。 – 2011-12-21 10:28:22