57

我有一个带有onclick方法的元素。

我想在另一个函数中激活该方法(或:假点击此元素)。

这可能吗?

4

11 回答 11

78

一旦你选择了一个元素,你可以调用 click()

document.getElementById('link').click();

见:https ://developer.mozilla.org/En/DOM/Element.click

我不记得这是否适用于 IE,但它应该。我附近没有windows机器。

于 2008-12-07T12:18:29.433 回答
61

如果您使用的是 JQuery,您可以执行以下操作:

$('#elementid').click();
于 2008-12-07T12:21:13.983 回答
8

我可能会误解您的问题,但是,是的,这是可能的。我会这样做的方式是这样的:

var oElement = document.getElementById('elementId');   // get a reference to your element
oElement.onclick = clickHandler; // assign its click function a function reference

function clickHandler() {
    // this function will be called whenever the element is clicked
    // and can also be called from the context of other functions
}

现在,只要单击此元素,clickHandler就会执行其中的代码。同样,您可以通过在其他函数的上下文中调用该函数来执行相同的代码(甚至分配clickHandler给处理由其他元素触发的事件)>

于 2008-12-07T13:03:10.763 回答
6
var clickEvent = new MouseEvent('click', {
  view: window,
  bubbles: true,
  cancelable: true
});
var element = document.getElementById('element-id'); 
var cancelled = !element.dispatchEvent(clickEvent);
if (cancelled) {
  // A handler called preventDefault.
  alert("cancelled");
} else {
  // None of the handlers called preventDefault.
  alert("not cancelled");
}

element.dispatchEvent所有主流浏览器都支持。simulateClick()上面的示例基于 MDN上的示例函数。

于 2008-12-07T12:34:28.230 回答
6

如果您使用的是 jQuery,则需要使用该.trigger函数,因此它类似于:

element.trigger('click');

http://api.jquery.com/trigger/

于 2012-11-23T10:20:30.120 回答
4

使用javascript你可以触发click()focus()就像下面的例子

document.addEventListener("click", function(e) {
  console.log("Clicked On : ",e.toElement);
},true);
document.addEventListener('focus',function(e){
  console.log("Focused On : ",e.srcElement);
},true);

document.querySelector("#button_1").click();
document.querySelector("#input_1").focus();
<input type="button" value="test-button" id="button_1">
<input type="text" value="value 1" id="input_1">
<input type="text" value="value 2" id="input_2">

于 2017-09-24T11:47:46.863 回答
3

这是一个完美的例子,说明你应该使用像 Prototype 或 JQuery 这样的 JavaScript 库来抽象出跨浏览器的差异。

于 2008-12-07T12:38:54.790 回答
2

只需调用“onclick”!

这是一个示例html:

<div id="c" onclick="alert('hello')">Click me!</div>
<div onclick="document.getElementById('c').onclick()">Fake click the previous link!</div>
于 2008-12-07T12:28:16.997 回答
2

对于 IE,有fireEvent()方法。不知道这是否适用于其他浏览器。

于 2008-12-07T12:29:32.283 回答
1

我没有使用过 jQuery,但是 IIRC,提到的第一个方法不会触发onclick处理程序。

onclick如果您不使用事件详细信息,我会直接调用关联的方法。

于 2008-12-07T12:27:26.560 回答
-3

您也可以尝试获取元素的 onclick 属性,然后将其传递给 eval。尽管对评估有很大的禁忌,但这应该可以工作。我在下面放了一个样本

eval(document.getElementById('elementId').getAttribute('onclick'));
于 2010-08-16T21:42:46.333 回答