有没有办法使用 onclick
html 属性来调用多个 JavaScript 函数?
有没有办法使用 onclick
html 属性来调用多个 JavaScript 函数?
onclick="doSomething();doSomethingElse();"
但实际上,你最好不要使用onclick
,而是通过你的Javascript代码将事件处理程序附加到DOM节点。这被称为不侵入式JavaScript。
onclick=""
而不是 onClick=""
,这是一个很常见的错误。 - DrewTjsx
而不是 html
,这个问题没有被标记为 jsx
。 - DrewT定义了1个函数的链接
<a href="#" onclick="someFunc()">Click me To fire some functions</a>
从 someFunc()
触发多个函数
function someFunc() {
showAlert();
validate();
anotherFunction();
YetAnotherFunction();
}
onClick={()=>someFun()}
。当我遇到“Error: Too many re-renders. React limits the number of renders to prevent an infinite loop.”时,这个方法对我很有效。 - Adarsh Pawar如果您仅使用JavaScript而不是jQuery,那么这是所需的代码
var el = document.getElementById("id");
el.addEventListener("click", function(){alert("click1 triggered")}, false);
el.addEventListener("click", function(){alert("click2 triggered")}, false);
element.addEventListener
方法将其与函数链接。在这个函数中,您可以调用多个其他函数。$("#id").bind("click", function() {
alert("Event 1");
});
$(".foo").bind("click", function() {
alert("Foo class");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="foo" id="id">Click</div>
ES6 React
<MenuItem
onClick={() => {
this.props.toggleTheme();
this.handleMenuClose();
}}
>
var btn = document.querySelector('#twofuns');
btn.addEventListener('click',method1);
btn.addEventListener('click',method2);
function method2(){
console.log("Method 2");
}
function method1(){
console.log("Method 1");
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>Pramod Kharade-Javascript</title>
</head>
<body>
<button id="twofuns">Click Me!</button>
</body>
</html>
为了编写易于维护的JavaScript代码,使用命名函数是一个不错的选择。
以下是匿名函数的示例:
var el = document.getElementById('id');
// example using an anonymous function (not recommended):
el.addEventListener('click', function() { alert('hello world'); });
el.addEventListener('click', function() { alert('another event') });
但是,假设您有几个附加到同一元素的匿名函数,并且想要删除其中一个。无法从该事件侦听器中删除单个匿名函数。
相反,您可以使用命名函数:
var el = document.getElementById('id');
// create named functions:
function alertFirst() { alert('hello world'); };
function alertSecond() { alert('hello world'); };
// assign functions to the event listeners (recommended):
el.addEventListener('click', alertFirst);
el.addEventListener('click', alertSecond);
// then you could remove either one of the functions using:
el.removeEventListener('click', alertFirst);
React函数组件
<Button
onClick={() => {
cancelAppointment();
handlerModal();
}}
>
Cancel
</Button>
即使您在HTML中有第二个onclick
属性,它也会被忽略,而click2 triggered
永远不会被打印。您可以通过代码添加多个事件,但最好的方法是像下面这样:
在代码中添加它们:
var element = document.getElementById("multiple_onclicks");
element.addEventListener("click", function(){console.log("click3 triggered")}, false);
element.addEventListener("click", function(){console.log("click4 triggered")}, false);
<button id="multiple_onclicks" onclick='console.log("click1 triggered");' onclick='console.log("click2 triggered");' onmousedown='console.log("click mousedown triggered");' > Click me</button>
在处理事件时,你需要小心,因为事件可能会堆积起来。如果添加了太多的事件,你可能会失去对它们运行顺序的计数。