Javascript e、 preventDefault()和return false不阻止触发链接

Javascript e、 preventDefault()和return false不阻止触发链接,javascript,Javascript,我在这里看到了一些答案,解释了e.preventDefault()和return false可以阻止链接触发,但它对我不起作用。这是我需要复制的代码 HTML 段落 JS document.addEventListener(“DOMContentLoaded”),函数(事件){ var page_content_links=document.queryselectoral(“#content a”); 对于(变量i=0;i

我在这里看到了一些答案,解释了
e.preventDefault()
return false
可以阻止链接触发,但它对我不起作用。这是我需要复制的代码

HTML


段落


JS

document.addEventListener(“DOMContentLoaded”),函数(事件){
var page_content_links=document.queryselectoral(“#content a”);
对于(变量i=0;i
下面是一个jsfiddle演示这个问题

我想要的行为是,当点击链接时,浏览器不会跟随并停留在同一页面上。当看到完整的代码时,原因就更为明显了,但上面重复了这个问题

为了进行故障排除,我添加了一个控制台日志,以确保它正在命中
e.preventDefault()
return false
,并且是。我还单独尝试了这两种方法。我正在使用最新的Chrome

如何防止链接触发,为什么我的代码不提供这种行为?


**更新:*更新代码和JS FIDLE以与事件变量一致,问题仍然存在。

您没有捕获事件对象,它是事件处理程序函数的第一个参数

'click', function () {
因此
e
未定义:

e.preventDefault();
当您尝试将其作为函数调用时,它会抛出一个异常(因为它不是异常)

所以它永远不会到达终点:

return false;
您需要命名参数:

'click', function (e) {

您没有捕获事件对象,它是事件处理程序函数的第一个参数

'click', function () {
因此
e
未定义:

e.preventDefault();
当您尝试将其作为函数调用时,它会抛出一个异常(因为它不是异常)

所以它永远不会到达终点:

return false;
您需要命名参数:

'click', function (e) {


代码中的
e
不引用事件对象@在这种情况下,
返回false
应停止重定向。否,错误(ReferenceError)将停止后续行的执行。您正在使用
控制台.log
,您不能看到控制台中直接打印在您记录的
“here”
下方的错误吗?因为错误答案已被删除,我在此重复,解决方案不是使用
event
,而是修复internal事件处理程序声明,以便在代码中添加e参数
e
,而不是引用事件对象@在这种情况下,
返回false
应停止重定向。否,错误(ReferenceError)将停止后续行的执行。您正在使用
控制台.log
,您不能看到控制台中直接打印在您记录的
“here”
下方的错误吗?因为错误答案已被删除,我在这里重复,解决方案不是使用
事件
,而是修复内部事件处理程序声明,在这里添加e argumentOk,它到达
返回false
。为什么页面仍在刷新?如果您检查JSFIDLE,
DOMContentLoaded
处理程序也不会运行,单击处理程序永远不会设置。这不起作用,将更新问题和JS FIDLE作为证据。事件是DOMContentLoaded事件!错误在函数声明中JS FIDLE由于与问题中的代码无关的原因无法工作。它已将所有代码包装在一个onload处理程序中,该处理程序在DOM就绪后启动,因此DOM就绪处理程序分配得太晚,无法运行。为什么页面仍在刷新?如果您检查JSFIDLE,
DOMContentLoaded
处理程序也不会运行,单击处理程序永远不会设置。这不起作用,将更新问题和JS FIDLE作为证据。事件是DOMContentLoaded事件!错误在函数声明中JS FIDLE由于与问题中的代码无关的原因无法工作。它将所有代码包装在一个onload处理程序中,该处理程序在DOM就绪后启动,因此DOM就绪处理程序分配得太晚,无法运行。