在javascript中将对象作为函数调用

use*_*236 2 javascript onclick javascript-events

我正在尝试执行在使用javascript代码的网页上执行事件(例如onClick事件)时调用的javascript函数.我从这样的事件中获取函数:

var attributval = document.getElementsByTagName("a").getAttribute('onClick');
Run Code Online (Sandbox Code Playgroud)

我试图执行这个对象(实际上是一个javascript函数)作为一个函数(假设我们在这个例子中,我试过:

var attributval = document.getElementsByTagName("a").getAttribute('onClick');
attributval() = function(){attributval};
attributval();
Run Code Online (Sandbox Code Playgroud)

但它不起作用.

Ale*_*lov 5

DOM属性与JavaScript属性不同(即使它们可以具有相同的名称onclick).你应该用

var attributval = document.getElementsByTagName("a")[0].onclick;
Run Code Online (Sandbox Code Playgroud)

null从JS对象中检索一个函数(或)(相反getAttribute(),它很可能会返回一个toString()属性).

现在,attributval() =是非法语法,因为attributval()不是l值(你不能分配它).

attributval();它将工作但没有第二行(这是非法的JavaScript)它将调用原始的A元素onclick处理程序(如果已定义)或抛出异常(如果onclick处理程序是null).