绑定和解除绑定函数

bind and unbind functions

我有 3 个按钮 - btn 1、2 和 3 - 每个按钮都有自己的功能。我想要的是按钮 1 默认具有功能 1。但是当按下按钮 2 时,按钮 1 的功能必须切换到功能 4。当按下按钮 3 时,按钮 1 必须重新分配到功能 1。所以按钮2和按钮3有自己的功能,但是他们也要切换按钮1的功能。代码是:

<!DOCTYPE html>
<html>
<head>
<title>Page Title</title>
</head>
<body>

<button id="button1">button 1</button>
<button id="button2">button 2</button>
<button id="button3">button 3</button>

<script>
document.getElementById("button1").addEventListener("click", myFunction1);

function myFunction1() {
alert ("1");
}

document.getElementById("button2").addEventListener("click", myFunction2);

function myFunction2() {
alert ("2");
}

document.getElementById("button3").addEventListener("click", myFunction3);

function myFunction3() {
alert ("3");
}
</script>

<script>
function myFunction4() {
alert ("4");
}
</script>


</body>
</html>

在 function2 和 function3 中使用 removeEventListener,然后使用 addEventListener

附加适当的函数
function myFunction2() {
    document.getElementById("button1").removeEventListener("click", myFunction1);
    document.getElementById("button1").addEventListener("click", myFunction4);
}

function myFunction3() {
    document.getElementById("button1").removeEventListener("click", myFunction4);
    document.getElementById("button1").addEventListener("click", myFunction1);
}

您可以使用 if 语句使用数字分配您希望函数执行的操作:

<!DOCTYPE html>
<html>
<head>
<title>Page Title</title>
</head>
<body>

<button id="button1">button 1</button>
<button id="button2">button 2</button>
<button id="button3">button 3</button>

<script>
document.getElementById("button1").addEventListener("click", myFunction1);
var functionType = 1;
function myFunction1() {
  if(functionType == 1){
    alert("1");
  } else if(functionType == 4){
    myFunction4();
  }
}

document.getElementById("button2").addEventListener("click", myFunction2);

function myFunction2() {
alert ("2");
functionType=4;
}

document.getElementById("button3").addEventListener("click", myFunction3);

function myFunction3() {
alert ("3");
functionType=1; 
}
  
  function myFunction4() {
alert ("4");
}
</script>

<script>

</script>

PS:您也可以为 functionType 使用布尔值 (true/false),但如果您计划添加更多功能,我会使用数字。