我会尽量保持简短。我在两个事件监听器之间交替,一个调用“goMetric”,另一个调用“goImperial”。unitSwitch 是在两者之间切换的链路。有没有更有效的方法来删除一个事件监听器并用另一个替换它?非常感谢有关如何编写更好的代码的任何其他提示。
(注意:我现在试图避免使用 jQuery,以便更好地理解 JavaScript。我想知道幕后发生了什么。)
var isMetric = false;
unitSwitch.addEventListener('click', goMetric);
function goMetric() {
isMetric = true;
// removed other code
unitSwitch.innerHTML = "Go imperial";
unitSwitch.removeEventListener('click', goMetric);
unitSwitch.addEventListener('click', goImperial);
}
function goImperial() {
isMetric = false;
// removed other code
unitSwitch.innerHTML = "Go metric";
unitSwitch.removeEventListener('click', goImperial);
unitSwitch.addEventListener('click', goMetric);
}
看起来好像有很多代码来做这么简单的事情。