连接变量和函数名称

时间:2019-08-29 22:38:08

标签: javascript jquery html hyperlink

我们要连接函数名和变量名。单击<a>标记时应发生这种情况。

我们如何连接函数和变量名?

问题:

  • 我们收到错误消息fn_dataId()未定义

所需的输出:

fn_dataId() should be fn_some123();

我们尝试过的事情

$(function() {
    $('.link').on('click', function() {
      console.log('clicked');
      var dataId = $(this).attr('data-id');
      console.log('data id - ' + dataId);
      
      // What we tried, but didn't work. 
      fn_dataId(); 
    });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<a data-id="some123" class="link">
Click here
</a>

2 个答案:

答案 0 :(得分:5)

您可以连接字符串,并使用window["function_name"](args);将结果用作函数:

function fn_some123() {
  console.log('i have been called!');
}

$(function() {
    $('.link').on('click', function() {
      var dataId = $(this).attr('data-id');
      window['fn_' + dataId]();
    });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<a data-id="some123" class="link">
Click here
</a>

答案 1 :(得分:-2)

我不确定这个用例听起来像dataId作为更通用函数的参数可能更好,但是您可以使用以下方法解决它:

eval("fn_" + dataId + "()")

尽管要警惕-执行用户输入的任何操作都会带来很大的安全风险