当前位置: 首页 > 面试题库 >

addEventListener甚至不需要我就调用该函数

仲孙景胜
2023-03-14
问题内容

因此,我们有一个页面:

<span id='container'>
    <a href='#' id='first'>First Link</a>
    <a href='#' id='second'>Second Link</a>
</span>

并想添加一些点击事件:

first.addEventListener('click', function(){alert('sup!');})

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

function message_me(m_text){
    alert(m_text)
}

second.addEventListener('click', message_me('shazam'))

它立即调用该函数。我该如何阻止!


问题答案:

由于第二个参数需要函数 引用 ,因此您需要提供一个。使用有问题的代码,您将立即调用该函数并传递其 结果(这是undefined因为,因为该函数所做的全部是alert且不返回任何内容)。在匿名函数中调用该函数(如您的第一个示例),或者更改该函数以返回一个函数。

function message_me(m_text){
    alert(m_text)
}

second.addEventListener('click', 
    function() {
        message_me('shazam');
    }
);


 类似资料:
  • 我现在能够在运行在Websphere服务器上的Java EE项目中自动进行增量编译。 我整理jRebel是因为我在突然启动服务器时遇到了问题,并且注意到现在Intellij正在自动编译,我也能够“几乎”有效地看到更改(比Eclipse慢) 那么,intellij中甚至需要jRebel吗?我对Websphere的设置可以在下图中看到。注意,我只添加了一个Ear文件,它不是分解版本,仍然这是工作。jr

  • 问题内容: 如我所见,使用Java 8时,显而易见的代码无论是“对象”流还是原始流(即和朋友),都将仅使用: 但随后,也有不少“可流动资源” 。 读取javadoc时不清楚的是流是否始终是顺序的,以及流是否始终是并行的… 然后是尤其是它之一,它可以是甚至是它。 我的直觉是,事实上,无论a是否可以默认并行,还是完全并行,都是由其底层… 我在正确的轨道上吗?我已经阅读并再次阅读了javadocs,但仍

  • 我在PHP5.3中有一个奇怪的行为 我有课要讲这个 但是函数cacheInstance是一个私有函数。。。。 有人能解释一下为什么会这样用吗?这个方法不应该是私有的,也不应该是外部无法访问的吗? 更新: 好吧,现在我完全迷路了。。。我甚至可以访问实例的私有变量。。。比如说。。。这一定是有意为之,有人能给我指个方向吗?

  • 我甚至不使用新的遗迹,我得到了他们的错误。事情就这么突然发生了。 我使用的是最新的Android Studio构建(0.61)。就连我的主分支也有同样的错误。我的机器上有其他项目使用新的遗迹,但不是这个。这个项目没有使用新的遗迹在任何方式,与其说是一个任性的梯度依赖。 项目的build.gradle: 编辑 该项目现在在建筑中导入新的遗迹。根据用户的建议。这解决了这个问题,但我仍在探索为什么,因为

  • 我甚至不使用新的遗物,我得到错误的他们。只是突然发生了。 我使用的是最新的Android Studio版本(0.61)。甚至我的主分支也有同样的错误。在我的机器上有其他的项目使用新的遗迹,但没有这一个。这个项目不使用新的遗迹在任何方式,更多的是一个任性的梯度依赖。 我试着清理我的gradle缓存,重新下载所有的第三方库,没有工作。 编辑 该项目现在根据用户建议在Build.Gradle中导入新的遗

  • 我需要做一些异步方法。不要等到它执行。我尝试未来,但它没有帮助。 但这里的日志: 正如您所见,日志打印“onFailedLogonSimulation:after”是在10秒后调用的。但我需要日志在“OnFailedLogonSimulation:before”之后每天打印。不等待单元异步方法调用完成。