Javascript ';触摸屏';页面加载时正在激发事件。你知道是什么导致了这一切吗?

Javascript ';触摸屏';页面加载时正在激发事件。你知道是什么导致了这一切吗?,javascript,Javascript,上下文:我正在尝试为移动设备实现一个导航侧栏。在这样做的过程中,我在html中的图标中添加了一个touchstart事件,这样当按下它时,就会触发一个切换侧栏的函数 问题:由于某些无法解释的原因,在加载页面时会触发事件 代码: 为了测试触发是否是由javascript中的其他内容引起的,我将其全部删除,只留下显示的代码。这是我在测试html页面上运行的唯一javascript(除了scrollTop插件和jQuery核心)。我的图标上也没有附加任何其他事件 我觉得我以错误的方式连接了事件-但我似

上下文:我正在尝试为移动设备实现一个导航侧栏。在这样做的过程中,我在html中的图标中添加了一个touchstart事件,这样当按下它时,就会触发一个切换侧栏的函数

问题:由于某些无法解释的原因,在加载页面时会触发事件

代码:

为了测试触发是否是由javascript中的其他内容引起的,我将其全部删除,只留下显示的代码。这是我在测试html页面上运行的唯一javascript(除了scrollTop插件和jQuery核心)。我的图标上也没有附加任何其他事件


我觉得我以错误的方式连接了事件-但我似乎找不到解决方案

应将函数作为addEventListener的第二个参数传入:

$(document).ready(function() {
    var el = document.getElementById("bodyID").getElementsByClassName("fa-navicon");
    el[0].addEventListener("touchstart", function() { alert("Hello") }, false);
});

事件不会在加载时触发,您正在调用处理程序而不是注册它。有些关联:手机中的点击和触摸事件有什么区别。我在手机上测试了我的页面,并使用onmousedown=“someFunction()”,因为当我点击导航图标时,它仍然有效。显然,这意味着我可以在我给出的上下文中使用它,但我也在考虑用触摸事件做其他事情,所以我需要弄清楚如何在没有鬼火的情况下使用它们。弗雷德里克:我想。addEventListener是用来注册事件的。那么,注册一个事件的正确方法是什么呢?正确的方法是传递一个函数,正如Erik Nijland在他的回答中所演示的那样。您无法传递
警报
本身,因为您无法指定参数,因此您必须围绕它编写一个匿名函数。我收回它,我只是一直将functionName()作为参数传递。教一个(明确的)noob:为什么这不是有效的(比如,如果任何函数是函数对象,因此应该像回调一样作为参数,那么为什么你需要一个匿名函数)?
$(document).ready(function() {
    var el = document.getElementById("bodyID").getElementsByClassName("fa-navicon");
    el[0].addEventListener("touchstart", function() { alert("Hello") }, false);
});