相关疑难解决方法(0)

addEventListener在没有我甚至要求的情况下调用该函数

所以我们有一个页面:

<span id='container'>
    <a href='#' id='first'>First Link</a>
    <a href='#' id='second'>Second Link</a>
</span>
Run Code Online (Sandbox Code Playgroud)

并想要添加一些点击事件:

first.addEventListener('click', function(){alert('sup!');})
Run Code Online (Sandbox Code Playgroud)

奇迹般有效!但是,当您将第二个参数设为外部函数时:

function message_me(m_text){
    alert(m_text)
}

second.addEventListener('click', message_me('shazam'))
Run Code Online (Sandbox Code Playgroud)

它立即调用该函数.我怎么能阻止这个?很烦人!

这是一个现场演示:http://jsfiddle.net/ey7pB/1/

javascript addeventlistener

15
推荐指数
4
解决办法
2万
查看次数

JavaScript addEventListener 函数语法

我无法理解为什么事件侦听器的函数参数不只接受该函数。这是代码:

变量声明:

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)

谁能解释一下为什么我不能只输入函数的名称,而必须将其“子化”到另一个函数中?

javascript syntax function addeventlistener

3
推荐指数
1
解决办法
363
查看次数

标签 统计

addeventlistener ×2

javascript ×2

function ×1

syntax ×1