我可以在多个事件侦听器中重用javascript函数吗?

时间:2019-02-22 19:36:39

标签: javascript function addeventlistener

我想在多个事件侦听器中重新使用一个长函数。

有没有一种方法可以在多个事件侦听器(没有jQuery或其他库)中重用javascript函数。

我尝试了一些事情。

function one(){
    console.log("not supposed to show until I press the variable containing num1")
};


num1.addEventListener('click', one());

在开始时运行该功能,而不是在单击时运行

num1.addEventListener('click', function one(){
    console.log("oops")
});
num2.addEventListener('click', one());

当我按num1时运行不起作用

const one = () => {console.log("Still not working")}
num1.addEventListener('click', one());

与第一个示例相同。

我想在多个事件侦听器中重新使用一个长函数。

3 个答案:

答案 0 :(得分:0)

您应该像这样num1.addEventListener("click", one); num2.addEventListener("click", one);使用 使用function one(...){...}先前声明的

答案 1 :(得分:0)

您应该提供一个事件监听器要调用的函数,但是通过执行one(),您不是在提供函数,而是提供了该函数返回的内容。

就像提到的@Luis Barajas一样,做num1.addEventListener("click", one)

答案 2 :(得分:0)

one()返回undefined,您传递的是undefined而不是回调。您可以传递函数并在其中调用one()

let num1 = document.querySelector('#num1');
let num2 = document.querySelector('#num2');


function one(){
  console.log("Its working ");
}
num1.addEventListener('click', (e) => {
  one()
});
num2.addEventListener('click', (e) => {
  one()
});
<button id="num1">Num 1</button>
<button id="num2">Num 2</button>