我已经搜索了一段时间,如何从字符串调用javascript函数(函数名称及其参数存储在字符串中)。我找到了很多信息,比如不使用eval()......
我找到了解决方案,但我没有让他们工作。我做错了什么?
function insertArtikel(param1, param2, param3, param4, param5, param6) {
alert('Called successfully');
alert('Param1: ' + param1 + ', Param2: ' + param2 + ', Param3: ' + param3 + ', Param4: ' + param4 + ', Param5: ' + param5 + ', Param6: ' + param6);
}
$('#mybutton').on('click', function () {
todo = $('#txt1').val();
params = $('#txt2').val();
alert('Now calling: '+todo+'('+params+');');
//Maybe making an array of it:
//params = params.replace(/'/g, '');
//params = params.split(',');
window[todo](params);
});
它应该运行函数“insertArtikel”(textfield1)并在单击Button时给出textfield2的参数。 SHOULD ..
感谢所有回复!
编辑:感谢sabof!我没有正确地将字符串转换为数组!区别: 错误:var args = params.replace(/'/ g,'')。split(','); 右:var args = params.replace(/'/ g,'')。split(/,?/); 现在它有效!!!!!!致谢!!!答案 0 :(得分:2)
正确的答案是:
var args = params.replace(/'/g,'').split(/, ?/);
window[todo].apply(null, args);
然而它在JSFiddle中不起作用,因为JSFiddle自动包装代码,insertArtikel
不是全局函数:
$(window).load(function(){
function insertArtikel(param1, param2, param3, param4, param5, param6) {
alert('Called successfully');
alert('Param1: ' + param1 + ', Param2: ' + param2 + ', Param3: ' + param3 + ', Param4: ' + param4 + ', Param5: ' + param5 + ', Param6: ' + param6);
}
$('#mybutton').on('click', function () {
todo = $('#txt1').val();
params = $('#txt2').val();
alert('Now calling: '+todo+'('+params+');');
var args = params.replace(/'/g,'').split(/, ?/);
window[todo].apply(null, args);
});
});