Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 以编程方式调用onclick属性_Javascript_Jquery_Html - Fatal编程技术网

Javascript 以编程方式调用onclick属性

Javascript 以编程方式调用onclick属性,javascript,jquery,html,Javascript,Jquery,Html,我在一个页面上有一堆类似的标签 <a href="#" id="001" onclick="fnaaa();" >...</a> ... <a href="#" id="002" onclick="fnaba();" >...</a> ... <a href="#" id="003" onclick="fncda();" >...</a> //sometimes maybe like this <

我在一个页面上有一堆类似的
标签

 <a href="#" id="001" onclick="fnaaa();" >...</a>
  ...
 <a href="#" id="002" onclick="fnaba();" >...</a>
  ...
 <a href="#" id="003" onclick="fncda();" >...</a>


 //sometimes maybe like this
 <a href="#" id="004" onclick="fnagg(); return false;" >...</a>
  ...
$('a[id="' + id + '"]').click();
$('a[id="' + id + '"]').trigger("click");
事实证明这两个都是不允许的,所以如果我有id,我如何调用在onclick属性中编写的函数?我知道我可能会得到这样的结果

var funcToCall = $('a[id="' + id + '"]').attr('onclick');

但是我怎么称呼这个函数调用呢?记住funcToCall可能不仅仅是一个函数名,例如“fnagg();return false;”

首先,ID属性必须以字母开头。在修复该问题之后,我建议不要使用内联
onclick
处理程序

$("#ID_HERE").click(function(e) {
  fnaaa();
  e.preventDefault();
});
然后您可以轻松触发它:

$("#ID_HERE").triggerHandler("click");
但是,如果您绝对必须使用丑陋的onclick,则可以调用它:


var el=document.getElementById('foo');
el.onclick();

您正在使用
onclick
属性绑定处理程序。试着像下面这样

document.getElementById(id).click();
演示:


我会这样做:

对于html

<a href="#" class="dynamicFuncs" id="my001" data-funcName="myFunc">test</a>
最好使用addEventListener()。您可以添加所有类型的事件。例如:“单击”、“鼠标移动”等。最后的false是阻止事件向上遍历DOM树。通过将第三个属性设置为true,事件将继续遍历DOM树,以便父元素也将接收事件。这也使得删除事件与使用removeEventListener()添加事件一样简单

添加事件

element.addEventListener(event, function, useCapture)
element.removeEventListener(event, function, useCapture)
删除事件

element.addEventListener(event, function, useCapture)
element.removeEventListener(event, function, useCapture)
事件:必需。指定事件名称的字符串

功能:必需。指定事件发生时要运行的函数

使用捕获可选。一个布尔值,指定是在捕获阶段还是在冒泡阶段执行事件

可能的值:

true-事件处理程序在捕获阶段执行

false-默认值。事件处理程序在冒泡阶段执行

此示例不需要JavaScript库。这只是简单的旧JavaScript,可以在每个浏览器中工作,无需额外的东西

   <!DOCTYPE html>
    <html>
    <head>
    <title>exampe</title>
    </head>
    <body>
        <a id="test" href="">test</a>
    <script>
        document.getElementById("test").addEventListener("click", function(){
            alert('hello world');
        }, false);
    </script>
    </body>
    </html>
更多信息请点击此处:

使用.on()


此处的更多信息:

不,我不知道任何给定标记上的onclick attribute是什么,我只能找到by id,并且想要特定onclick中的函数,您可以执行
$('a[id=“”+id+”)。单击()$('a[id=“”+id+”)。触发器(“单击”)如果使用jQuery函数绑定事件处理程序。阅读更多有关您可以尝试的差异的信息,如setTimeout(funcToCall+“()”,0);这似乎是一个糟糕的设计决策。每个链接都在做什么?例如,
fnaaa()
有什么作用?我发布了一个很好的示例,请在本页上查看。谢谢,这些不是我的真实id,我只是尝试简化示例。因此,人们可以看到我正在尝试做的事情—在只知道仍要使用jQuery选择元素的idIf的情况下动态调用内联onclick属性(例如,如果要基于ID以外的内容进行选择),可以使用
$(选择器)[0]触发onclick处理程序Im获取对象[Object Object]没有使用jquery version$(选择器)[0]的方法“onclick”。.onclick();如果使用addEventListener(),则不会出现任何错误。onclick()是元素的一个属性,因此只能分配一次单击操作。在何处addEventListener()可以为任意元素分配尽可能多的侦听器和尽可能多的操作。@ScottSelby什么?我想,你的演示中有一个输入错误。检查属性
id
。。在该演示中,您将其命名为
d
而不是
id
@Vega,您是正确的,但这是我所知道的将字符串封装在函数中的唯一方法,就像问题所要求的那样。其实并不总是邪恶的…根据这里投票的答案:
   <!DOCTYPE html>
    <html>
    <head>
    <title>exampe</title>
    </head>
    <body>
        <a id="test" href="">test</a>
    <script>
        document.getElementById("test").addEventListener("click", function(){
            alert('hello world');
        }, false);
    </script>
    </body>
    </html>
$("#target").click(function() {
  alert("Handler for .click() called.");
});
$("#target").on("click", function() {
  console.log($(this).text());
});