JavaScript preventDefault不是功能

时间:2019-08-22 17:39:12

标签: javascript

我正在尝试使用JavaScript检测对按钮的点击并阻止默认操作

<button onclick="myFunction(this)">Click Here</button>

function myFunction(event) {

    event.preventDefault();

    console.log("Function Has Run")
}

我遇到了错误

event.preventDefault is not a function

我要去哪里错了?

2 个答案:

答案 0 :(得分:1)

onclick函数中,this的值是 元素,而不是事件。

eventonclick函数的第一个参数。

您可以这样做:

onclick="myFunction(event)"

…,但是老实说,我不确定onclick属性是否设置了本地event变量是否为global event

最好将事件处理程序与JavaScript绑定:

document.querySelector('button').addEventListener('click', myFunction)

然后myFunction 本身将成为事件处理程序,因此传递给它的第一个参数将成为事件对象,而this将成为事件处理程序所针对的元素绑定。

答案 1 :(得分:1)

只要您想访问内部事件,我就知道直接在您的onclick属性中传递事件是最好的。

如果您希望使用其他this,则必须使用bindcallapply

将其绑定

您的代码最后看起来将与此类似:

<button onclick="myFunction.call('new this', event)">Click Here</button>

function myFunction(event) {

    console.log(this); // "new this"
    event.preventDefault();

    console.log("Function Has Run")
}