2015-09-26 125 views
1

我创建了一个DOM结构这样传递一个回调函数作为HTML数据属性

<div data-execute="someFunction.abc" id="someId"> 
    </div> 

我能够以检索在JS的属性,但我打算执行这个作为一个回调函数。因此,我做这样的

var x = document.getElementById("someId").getAttribute('data-execute'); 

正如预期的那样,这是在安慰的typeof(X)是示出“串”。请参阅本小提琴

https://jsfiddle.net/Ld9fzo7L/

返回someFunction.abc。但我也检查了这个链接 Passing a Javascript function through inline data- attributes

但是没办法,我能够执行它作为回调函数。任何帮助都将是真正可观的。

+1

什么是ABC?这是一个数据表? –

回答

1

试试这个:

<div data-execute="someFunction.abc" id="someId"></div> 

var x = document.getElementById("someId").getAttribute('data-execute'); 
window[x].call(); 
+0

这将起作用,但最终没有.abc。不知道它应该是参数,也许? – sinisake

1

可以使用call methodon在全球范围内定义的函数,你可以在全局窗口ojbect访问它。

价:

()的调用方法调用与给定的单独设置该值,并 参数的函数。

我已经假定代码后的点是一个参数传递给函数。

代码:

var someFunction = function (p) { 
    alert(p) 
} 
var load = (function (module, global) { 
    var x = document.getElementById("someId").getAttribute('data-execute'); 
    window[x.split('.')[0]].call(undefined, x.split('.')[1]); 

}(load || {}, this)) 

演示:https://jsfiddle.net/IrvinDominin/5bjsmu3x/

相关问题