Onsubmit事件不为null,JavaScript对象表示为';什么是空的?

Onsubmit事件不为null,JavaScript对象表示为';什么是空的?,javascript,Javascript,一幅画抵得上1000字: 从上面的图片可以看出,表单有一个onsubmit事件。但是当我试图引用onsubmit时,它甚至告诉我它是空的 我问这个问题的原因是因为我试图清除onsubmit事件: doc.getElementById("frmMaster").onsubmit = null; 这是行不通的 我做错了什么?我认为要注销事件,必须使用removeEventListener('event',boundFunction)。从您的代码中产生的一个问题是,WebForm_OnSub

一幅画抵得上1000字:

从上面的图片可以看出,表单有一个onsubmit事件。但是当我试图引用onsubmit时,它甚至告诉我它是空的

我问这个问题的原因是因为我试图清除onsubmit事件:

doc.getElementById("frmMaster").onsubmit = null;   
这是行不通的


我做错了什么?

我认为要注销事件,必须使用
removeEventListener('event',boundFunction)
。从您的代码中产生的一个问题是,WebForm_OnSubmit可能无法在您可以访问的位置定义。您需要做的是将该函数放入一个可以从控制台访问的上下文中(或者在您最终想要调用此代码的任何地方)。所以你基本上可以做到这一点:

/* 
    somewhere in your server code, or wherever this WebForm_OnSubmit is defined
    var handleToWebForm_OnSubmit = WebForm_OnSubmit; //must be global scope
    // you will need to get a reference in javascript to this function 
    // and bind it so that you can willingly unbind it
*/
doc.getElementById("frmMaster").removeEventListener('submit', handleToWebForm_OnSubmit)

我昨天能够解决这个问题。在使用chrome developer工具浏览对象层次结构之后,我注意到该对象具有“onsubmit”属性,但“onsubmit”属性已经为空。因此:

doc.getElementById("frmMaster").removeAttribute("onsubmit");

已成功删除该事件。我承认我并没有完全理解事件作为属性或属性的区别,但至少它解决了这个问题。

EventListenerList是在DOM 3中引入的,但还没有浏览器支持它。第一。我很确定,onsubmit属性中的
javascript:
-部分是错误的。好吧,应该有有效的JS,而这不是。第二。更改onsubmit属性也会更改onsubmit属性,但更改属性并不一定也会更改属性。(依浏览器而定)第三,财产才是最重要的!这就是要执行的,不管属性怎么说。实际上,“javascript:”部分是由asp.net放在那里的。它不是我们自己添加的。你的第二点是我昨天是如何解决这个问题的。