Javascript:Stop onClick default

Javascript:Stop onClick default,javascript,Javascript,我觉得我错过了一些明显的东西,但我能看到它 设置单击事件的触发器: anchor.addEventListener(“单击”,myClickEvent); 函数myClickEvent(){ 此.preventDefault();//失败 返回false; }从注册到addEventListener的处理程序返回false不会产生任何作用。看到和 建议的方法是调用event.preventDefault() HTML属性的处理程序仍然有效,但您不应该使用它,因为与event.preventDe

我觉得我错过了一些明显的东西,但我能看到它

设置单击事件的触发器:

anchor.addEventListener(“单击”,myClickEvent);
函数myClickEvent(){
此.preventDefault();//失败
返回false;

}
从注册到
addEventListener
的处理程序返回false不会产生任何作用。看到和

建议的方法是调用
event.preventDefault()


HTML属性的处理程序仍然有效,但您不应该使用它,因为与
event.preventDefault()
(不允许跟随链接)和
event.stopPropagation()
(不要让事件冒泡)相比,
return false
的含义并不清楚在名为
preventDefault
的全局作用域中没有这样的函数——您需要使用已传递到回调中的事件

另外,请确保您正在将事件附加到可以单击的内容(表单、锚定、按钮等),这些内容可能会阻止事件的发生


如果您将事件附加到子/父元素,则没有任何事情会像您预期的那样工作。

多亏了Teemu的代码,几乎可以做到这一点,但并不完全如此

这取决于调用函数的方式。看起来,发送的隐藏参数定义了“this”的值,在没有参数的情况下调用时,自动事件对象作为第一个可见参数发送:

无参数调用它:
anchor.addEventListener(“单击”,myClickEvent);
函数myClickEvent(参数1、参数2){
//此=事件父元素()
//this.href=
//param1=事件对象
//参数2=未定义
oEvent=param1;
oEvent.preventDefault();

}
单击时的默认值是什么意思?为什么clickEvent中没有该事件?您可以更改函数以获取事件参数myClickEvent(e),然后可以使用e.preventDefault()。更改代码以使事件可用。没有这一点,就没有可靠的方法来防止默认行为。我猜你有几个函数调用你的处理程序,这就是为什么你说你不能使用
preventDefault
?@NickC——在全局范围内没有
preventDefault
这样的函数。事件对象被传递到处理程序中。是的,我编辑了参数名称,但它是一个全局变量吗?@MichałMłoźniak我没有看到任何错误。请考虑将它还原回原版。@ JuanMendes考虑返回你以前的荣耀的答案(Aka un删除:-))@尼尔,我没有读过整个问题,OP知道<代码>预防默认> /代码>我不认为它说的太多了。想象一下999个代表@米莎MyooNeNekBead,你也可以通过上下文,为了简单起见,我把它从注释中删除了。当你说我也可以传递上下文时,你的意思是我可以通过某种方式将外部“this”传递到函数中,以便函数中使用的“this”引用正确的外部“this”?将上下文赋给外部范围中的变量,然后在
myClickEvent
的参数列表中传递该变量。好的,这样就行了。但是,如果在没有参数的情况下从其他地方运行相同的程序,则需要myClickEvent中的代码来检测如何调用它,并以不同的方式处理它。如果没有其他可行的解决方案,但听起来很混乱。请检查
this
,然后您可以在参数中模拟事件对象,或者在函数中检查事件对象(如果存在)。您还可以将函数拆分为两个单独的函数,仅当事件对象存在时调用另一个函数。。。
function myClickEvent(e) {
  e.preventDefault()
}
element.addEventListener("click", myClickEvent );

function myClickEvent(event) {
  event.preventDefault();
  return false;
}