提取物调用元素的onclick HTML属性中定义的JavaScript函数(使用jQuery attr / prop)

时间:2016-03-18 07:35:53

标签: javascript jquery html

我有两个按钮A& B和我需要调用按钮B的onclick HTML属性中定义的函数,但是单击按钮A。

在这种情况下,我还需要为该函数传递一个额外的参数。 按钮就像:

<input type="button" id="btn_a">  
<input type="button" id="btn_b" onclick="return doSomething(p,q)">

我想拨打电话:

doSomething(p,q,r) // 3rd param to identify that it was clicked via button A

按钮B实际上是一个可变按钮&amp;动态得到p,q params&amp;我需要传递第三个参数。

按钮B可以具有onClick属性,如

onClick= return doSomething(122,334) or return doSomething(abc,54)

或任何其他值。 我需要调用函数

doSomething(122,334,'btn_a') or

doSomething(abc,54,'btn_a')

如何使用jQuery / JS实现这一目标?我能够使用.prop()调用该函数,但无法弄清楚传递额外的参数。

我能够调用这个函数:

<script>
    jQuery('#btn_a').on('click',function(){
      (jQuery('#btn_b').prop('onclick'))(); //this can invoke the function but how to pass the additional param?
    })
  </script>
提前谢谢。 :)

4 个答案:

答案 0 :(得分:1)

您可以这样做,即使用attr代替prop来获取b的 onclick 的字符串值,然后替换参数p,q带有p,q,r的字符串,然后使用函数构造函数创建一个带有新主体的匿名函数(替换后)。

jQuery('#btn_a').on('click', function(){
    var onclickB = jQuery('#btn_b').attr('onclick'),
        onclickA = Function(onclickB.replace("p,q", "p,q,r"));
    return onclickA();
});

注意 :您可以使用此方法执行任何操作,只需创建正则表达式模式即可将任何内容替换为您想要的内容。

答案 1 :(得分:0)

你需要使函数doSomething如下,为btn_b传递null并为btn_a传递值。希望这会有所帮助。

<强> HTML

2016-03-18 07:34:04.802  INFO 1175 --- [ost-startStop-1] o.s.b.c.e.ServletRegistrationBean        : Mapping servlet : 'dispatcherServlet' to [/]

<强> SCRIPT

<input type="button" id="btn_a">  
<input type="button" id="btn_b">

答案 2 :(得分:0)

<input type="button" id="btn_a" onclick="return doSomething(p,q,r)">

答案 3 :(得分:0)

为简单起见,您可以设置一些想要作为参数传递给函数的全局变量/对象,然后调用该函数并使用全局变量/对象属性值。

你说什么;)

/* with variables in global scope should be accessible inside function going to call */
param1 = 1;
param2 = 2;

/* function definition */
function functionCalling(){
  /* use values here */
  console.log(param1, param2);
}

...
functionCalling();
...

/* with variables in global scope should be accessible inside function going to call */
param = {property1:1, property2:2};

/* function definition */
function functionCalling(){
  /* use values here of object */
  console.log(param.property1, param.property1);
}

...
functionCalling();
...