如何从多个控件调用JS函数

时间:2016-02-02 23:56:13

标签: javascript jquery function twitter-bootstrap-3

我在表中有几个控件,在表的每一行中生成ID和函数,如下所示:

<select id="data_01" onclick="open_details_01()">...
<select id="data_02" onclick="open_details_02()">...
<select id="data_03" onclick="open_details_03()">...

我只需要一个功能:

function open_details_ + *index* ()
{
}

当函数的名称始终以&#34; data _&#34;

开始时

3 个答案:

答案 0 :(得分:1)

您可以采取以下两种方式之一:

  1. 使用eval:`eval(functionName + num +“();”)
  2. 您可以将该功能作为对象的一部分,然后将其称为成员:myObject[ functionName + num ]()
  3. 要做第二个:

        var obj = {
          open_details_01: function()
          {
            alert( "1" );
          },
          open_details_02: function()
          {
            alert( "2" );
          },
          open_details_03: function()
          {
            alert( "3" );
          }
        };
    
        var num = "01";
        obj[ "open_details_" + num ]();
        num = "02";
        obj[ "open_details_" + num ]();
        num = "03";
        obj[ "open_details_" + num ]();
    

    第二种方式:https://jsfiddle.net/69Lk5baa/

答案 1 :(得分:1)

如果select控件的结构始终具有id序列data_01, data_02 ..,则可以使用jquery startsWith选择器:

$('[id^=data_]').on("change",function()
{
  alert(this.id);
});

示例:https://jsfiddle.net/DinoMyte/zwv9h4c9/2/

答案 2 :(得分:0)

假设您正在使用jquery,您可以使用带有selector方法的属性来附加事件。

https://api.jquery.com/attribute-starts-with-selector/

$(document).on('click', "button[id^='data_']", function(){
    alert('clicked');
})

https://jsfiddle.net/usav3dor/