js或Jquery 根据字符串类型的方法名,找到对应的方法并且调用
我自定义了一个input标签的属性,例如:<inputid="id1"onclick="clickFunName()"callFunc="funcName">callFu...
我自定义了一个 input 标签的属性,例如:
<input id="id1" onclick="clickFunName()" callFunc="funcName">
callFunc 是自定义属性,funcName 是方法名称,我现在需要 在js中 调用 funcName 这个方法,该如何操作?
其实这种方式 理论上肯定是可以实现的,onclick 是内置属性,他就可以将参数值转换为方法执行,自定义属性就不知道如何执行。
求大神指点不惑,感激! 展开
<input id="id1" onclick="clickFunName()" callFunc="funcName">
callFunc 是自定义属性,funcName 是方法名称,我现在需要 在js中 调用 funcName 这个方法,该如何操作?
其实这种方式 理论上肯定是可以实现的,onclick 是内置属性,他就可以将参数值转换为方法执行,自定义属性就不知道如何执行。
求大神指点不惑,感激! 展开
2个回答
推荐于2017-10-05 · 知道合伙人软件行家
关注
展开全部
可以使用js的eval函数实现,示例如下:
<script type="text/javascript">
//自定义函数,用于弹出三个参数的值
function alertFunc(str1,str2,str3){
alert(str1);
alert(str2);
alert(str3);
}
//自定义函数:根据传入的函数名,调用函数
function callAlert(functionName){
//根据函数名得到函数类型
var func=eval(functionName);
//创建函数对象,并调用
new func(arguments[1],arguments[2],arguments[3]);
}
</script>
<!--编写按钮,在点击事件中调用函数-->
<button onclick="callAlert('alertFunc','tom','hello','world')" >测试函数调用</button>
展开全部
<!doctype html>
<html>
<head>
<meta charset="utf-8" />
<title>test</title>
</head>
<body>
<input id="id1" type="button" onclick="clickFunName(this.attributes['callFunc'].nodeValue)" callFunc="funcName" value="按钮" />
<script>
function clickFunName(fn,args){
fn = eval(fn);
fn.call(this,args);
}
function funcName(){
alert('调用funcName方法成功!');
}
</script>
</body>
</html>
给你写个将字符串转换成方法名称并执行的demo
追问
嗯,确实是我想要的答案,运行测试果然没问题! 厉害,追问:判断是否是正确的方法字符串,如果传递进来的参数字符串不是方法名就会报错:
fn = eval(fn);
追答
function clickFunName(fn,args){
try {
fn = eval(fn);
} catch(e) {
console.log(e);
alert(fn+'方法不存在!');
}
if (typeof fn === 'function'){
fn.call(this);
}
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询