是否可以传递具有自定义数据属性的函数?
这不起作用:
<div data-myattr="hello();">
</div>
function hello(){
console.log('hello');
}
当我获得属性时,它是一个值为“hello();”的字符串 而不是函数。如何解决这个问题?
是否可以传递具有自定义数据属性的函数?
这不起作用:
<div data-myattr="hello();">
</div>
function hello(){
console.log('hello');
}
当我获得属性时,它是一个值为“hello();”的字符串 而不是函数。如何解决这个问题?
你可以这样做:
<div data-myattr="hello"></div>
function hello(){
console.log('hello');
}
function executeFunctionFromData(){
var d = 'hello' // Save `data-myattr` to d; (Obviously, this is just a hardcoded value as an example)
window[d](); // Execute the function.
}
这是有效的,因为函数hello
是在全局范围内定义的,因此是window
对象的属性。
<div id='some' data-my-function="function(x){console.log(x);}"></div>
js:
var myfunction = $('#some').data('my-function');
if(myfunction != undefined){
eval("myfunction = "+myfunction, myfunction);
}
if(typeof myfunction ==="function") {
myfunction('Cristo Rabani!');
}
使用 Webpack。
<div data-func="funcName"></div>
window.funcName = function() {};
使用评估:
eval("alert('hello');");
会显示你好;