我在像这样的数组中定义了一些函数。
checkInputType : function(sel){
alert($(sel).prop('type'));
},
checkSelect : function(el){
.......
},
.....
我可以这样调用它options.checkInput($(this));
。这是有效的。
现在我想动态调用任何已定义的函数。所以我有这个数组,其中包含函数名称。
var elmType2Func = {'input' : 'checkInput', 'select' : 'checkSelect', 'textarea' : 'checkTextarea'};
现在循环遍历表单内的所有元素,我想为每个元素调用正确的函数(elmType2Func数组,以元素作为键,函数名称为一个值)。
var element = $(this).prop('tagName').toLowerCase();
我不能这样调用 - options.elmType2Func[element]($(this));
我知道这不是调用该函数的正确方法。
任何人都可以帮我解决这个问题吗?
最佳答案
您需要存储函数,而不是它们的名称:
var elmType2Func = {'input' : checkInput, 'select' : checkSelect, 'textarea' : checkTextarea};
如果函数已经是某个对象的成员,例如:
var options = {
checkInput: function() {...},
checkSelect: function() {...},
}
然后你可以将字符串保存在 elmType2Func
中:
var elmType2Func = {'input' : 'checkInput', 'select' : 'checkSelect', 'textarea' : 'checkTextarea'};
并使用双重间接引用它们:
var tag = $(this).prop('tagName').toLowerCase();
var fun = options[elmType2Func[tag]];
为您提供该函数的引用。
关于javascript - 动态调用 javascript 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21475714/