为什么这个javascript会抛出一个未定义的错误?

时间:2010-07-29 20:46:12

标签: javascript

我想为应用程序中的所有文本框定义自己的onblur事件,以便我可以删除所有高ascii值,因此我编写了一个在每页加载运行的asp.net主页上运行的脚本,覆盖所有文本框/区域onblur事件,并存储旧事件的副本。

然后新事件调用旧事件,因此不会破坏表单中的现有事件。

它工作正常,直到页面定义了onblur,如:onblur =“func(this)” 当原始事件触发'this'点时似乎不再指向发送者控制。

Pastebin link with 2 simple examples

那么有人能够指出我更好的方法来实现这个目标吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

要在控制this的值的同时动态调用函数,请使用func.apply而不是标准调用。例如,而不是

myStoredFunc(arg1, arg2)

使用:

myStoredFunc.apply(this, arguments);

这样,由于apply的第一个参数,this变量的值将被正确传递给被调用的函数。第二个参数允许您指定参数值(这里我将所有当前函数的参数传递给被调用函数)。