js如何将字符串作为函数名调用函数

JavaScript012

js如何将字符串作为函数名调用函数,第1张

比如我现在有一个字符串str = "func_abc",func_abc是一个函数名,我现在知道str如何调用str这个字符串表示的函数.思路:1、用eval函数,字符串转换为命令行执行都可以通过eval函数。2、如果函数不多,可以通过if等方式进行判断,执行不同的分支。代码示例:function func_abc(){alert('a')}var str = "func_abc"eval(str+"()")//执行func_abc()函数将其用到实际项目中:<!DOCTYPE html><html><head><meta charset="UTF-8"><title>将字符串作为函数名调用函数</title></head><body><span>指标:</span><select id="zhibiao"><option selected="" value="总体">总体</option><option value="queryManagementVolume">办理量</option><option value="queryTimeConsuming">平均耗时</option><option value="queryOvertimePercent">超时占比</option></select></body><script src="../js/jquery.js"></script><script>$(document).on("change",'select#zhibiao',function(){ var fn=$(this).val() /* fn()*/ eval(fn+"()")})function queryManagementVolume(){ console.log("查询办理量")}function queryTimeConsuming(){ console.log("查询平均耗时")}function queryOvertimePercent(){ console.log("查询超时占比")}</script></html>

如果只需要result.data里的数据,可以把他再次序列化成json传过去

+'<a onclick="aa('+JSON.stringify(result.data[i]).replace(/"/g,"&"+"#34")+')">'

我当你result.data这个对象老是被改动数据,如果result.data[?]是不会被改变的对象的话,还可以把这些数据独立保存起来,比如最直接的放到window对象里:

for(var i=0i<result.data.lengthi++){

    window["data_"+i]=result.data[i]

    ...

    +'<a onclick="aa(data_'+i+')">'//这时data_*已经是一个赋了值变量名了

    +...

}

var str = 1 + 2 + "ss" + 3

var fun = function (str) {

    console.log(str)

}

fun(str)