<script>
function a1(){
alert(1);
}
</script>
<div id='a' data-func='a1'></div>
<script>
var a2 = $("#a").data('func');
a2();
</script>
然后我获取到了div的data属性,调用的时候缺报错了。应该怎么用呢?
10 个解决方案
#1
eval(a2+"()");
#2
window[a2]();
或
eval(a2)();
或
eval(a2)();
#3
window[a2]();
#4
回复于: 2017-09-27 17:12:34
发表于: 2017-09-27 17:46:06
穿越
#5
a2.call()
#6
感谢你的解答 但如果a1是个对象呢?就像下面这样的?
<script>
var a1 = {
function a3(){
alert(1);
}
}
</script>
<div id='a' data-func='a1.a3'></div>
<script>
var a2 = $("#a").data('func');
a2();
</script>
这样a2又该怎么调用呢?
#7
没看明白你这个是什么需求,函数的调用一般是触发性的。这样写没看出来有什么意义,明知道要调用那个函数为什么不直接写,要这样取值调用?
并且你这个都写错了var a1 = {a3:function(){alert(1)}} 直接调用 al.a3();
并且你这个都写错了var a1 = {a3:function(){alert(1)}} 直接调用 al.a3();
#8
是的 确实写错了 只是单纯复制进去了 太粗心了。。。
需求是 不知道载入哪个div 不同div对应不同事件 所以就把事件名称先写入div里
#9
那可以做一个条件执行函数
多个div对应标记为f1,f2,f3,f4,f5......
switch(param){
case "f1":
//do sth 执行函数
break;
case "f2":
//......
}
多个div对应标记为f1,f2,f3,f4,f5......
switch(param){
case "f1":
//do sth 执行函数
break;
case "f2":
//......
}
#10
<script>
var a1 = {
a3:function(){
alert(1);
}
}
</script>
<div id='a' data-func='a1.a3'></div>
<script>
var a2 = $("#a").data('func');
eval(a2)();//还是一样的
#1
eval(a2+"()");
#2
window[a2]();
或
eval(a2)();
或
eval(a2)();
#3
window[a2]();
#4
window[a2]();
或
eval(a2)();
回复于: 2017-09-27 17:12:34
发表于: 2017-09-27 17:46:06
穿越
#5
a2.call()
#6
window[a2]();
或
eval(a2)();
感谢你的解答 但如果a1是个对象呢?就像下面这样的?
<script>
var a1 = {
function a3(){
alert(1);
}
}
</script>
<div id='a' data-func='a1.a3'></div>
<script>
var a2 = $("#a").data('func');
a2();
</script>
这样a2又该怎么调用呢?
#7
没看明白你这个是什么需求,函数的调用一般是触发性的。这样写没看出来有什么意义,明知道要调用那个函数为什么不直接写,要这样取值调用?
并且你这个都写错了var a1 = {a3:function(){alert(1)}} 直接调用 al.a3();
并且你这个都写错了var a1 = {a3:function(){alert(1)}} 直接调用 al.a3();
#8
没看明白你这个是什么需求,函数的调用一般是触发性的。这样写没看出来有什么意义,明知道要调用那个函数为什么不直接写,要这样取值调用?
并且你这个都写错了var a1 = {a3:function(){alert(1)}} 直接调用 al.a3();
是的 确实写错了 只是单纯复制进去了 太粗心了。。。
需求是 不知道载入哪个div 不同div对应不同事件 所以就把事件名称先写入div里
#9
那可以做一个条件执行函数
多个div对应标记为f1,f2,f3,f4,f5......
switch(param){
case "f1":
//do sth 执行函数
break;
case "f2":
//......
}
多个div对应标记为f1,f2,f3,f4,f5......
switch(param){
case "f1":
//do sth 执行函数
break;
case "f2":
//......
}
#10
window[a2]();
或
eval(a2)();
感谢你的解答 但如果a1是个对象呢?就像下面这样的?
<script>
var a1 = {
function a3(){
alert(1);
}
}
</script>
<div id='a' data-func='a1.a3'></div>
<script>
var a2 = $("#a").data('func');
a2();
</script>
这样a2又该怎么调用呢?
<script>
var a1 = {
a3:function(){
alert(1);
}
}
</script>
<div id='a' data-func='a1.a3'></div>
<script>
var a2 = $("#a").data('func');
eval(a2)();//还是一样的