js或Jquery 根据字符串类型的方法名,找到对应的方法并且调用

我自定义了一个input标签的属性,例如:<inputid="id1"onclick="clickFunName()"callFunc="funcName">callFu... 我自定义了一个 input 标签的属性,例如:
<input id="id1" onclick="clickFunName()" callFunc="funcName">
callFunc 是自定义属性,funcName 是方法名称,我现在需要 在js中 调用 funcName 这个方法,该如何操作?
其实这种方式 理论上肯定是可以实现的,onclick 是内置属性,他就可以将参数值转换为方法执行,自定义属性就不知道如何执行。
求大神指点不惑,感激!
展开
 我来答
青鸟中关村专家
推荐于2017-10-05 · 知道合伙人软件行家
青鸟中关村专家
知道合伙人软件行家
采纳数:1734 获赞数:8440
就职于北大青鸟中关村,自2004年踏入北大青鸟这个行业,已经有11年工作经验和8年的培训经验,寓教于乐

向TA提问 私信TA
展开全部

可以使用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>
堆砌的字符
推荐于2017-09-06 · TA获得超过167个赞
知道答主
回答量:63
采纳率:0%
帮助的人:62.6万
展开全部
<!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); 
}    
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式