我无法理解为什么事件侦听器的函数参数不只接受该函数。这是代码:
变量声明:
var spanJS = document.getElementById("spanJS")
var txtPlayers = document.getElementById("ContentPlaceHolder1_txtPlayers")
var txtAmount = document.getElementById("ContentPlaceHolder1_txtAmount")
Run Code Online (Sandbox Code Playgroud)
然后关联事件监听器:
txtAmount.addEventListener("keyup", UpdateTotals())
txtPlayers.addEventListener("keyup", UpdateTotals())
Run Code Online (Sandbox Code Playgroud)
然后函数:
function UpdateTotals() {
...
}
Run Code Online (Sandbox Code Playgroud)
这是整个代码。问题是,当我运行它时,它执行 UpdateTotals() 而没有任何 keyup 事件,并且侦听器不起作用。
如果我进行以下更改,它将按预期工作:
txtAmount.addEventListener("keyup", function () {
UpdateTotals()
})
txtPlayers.addEventListener("keyup", function () {
UpdateTotals()
})
Run Code Online (Sandbox Code Playgroud)
谁能解释一下为什么我不能只输入函数的名称,而必须将其“子化”到另一个函数中?
我无法使事件侦听器自调用和侦听器工作的功能。
以下代码执行该函数,但事件侦听器不起作用:
window.addEventListener("resize", (function () {
document.getElementById("divMenu").innerHTML = document.getElementById("divTop").offsetWidth
})())
Run Code Online (Sandbox Code Playgroud)
该函数将设置网站格式所必需的(从一开始就是动态的)CSS 样式。“调整大小”功能必须在加载时执行。是否可以做到这一点,还是应该创建一个单独的自调用函数并在事件侦听器上调用它?