Javascript 在jquery中将变量作为函数调用
就像在PHP中一样,我需要一个变量 我从html中得到一个数据类型,这个变量实际上是js代码中的一个函数 我明白了,我要叫它。 每次都不一样,所以我不知道到底是哪一个Javascript 在jquery中将变量作为函数调用,javascript,jquery,Javascript,Jquery,就像在PHP中一样,我需要一个变量 我从html中得到一个数据类型,这个变量实际上是js代码中的一个函数 我明白了,我要叫它。 每次都不一样,所以我不知道到底是哪一个 if (e.which == 114 || e.which == 116) { var action = $('.active').data("action"); action(); } function testing() { alert('yes'); } 在这里,函数名正在测试,变量操作
if (e.which == 114 || e.which == 116) {
var action = $('.active').data("action");
action();
}
function testing() {
alert('yes');
}
在这里,函数名正在测试,变量操作正在保存它。
我该怎么称呼它?!
我记得有一个简单的语法,但我找不到它。
谢谢这取决于保存函数的对象。对于全局作用域,请使用:
窗口[操作]()
。否则,将窗口
替换为对象的名称:myObject[action]()
。但是,此解决方案不适用于在专用范围内声明的函数:
function f(fnName) {
function a() { alert('a') };
function b() { alert('b') };
fnName(); // error
}
在这种情况下,可以像这样使用eval(⚠ 保持对输入的控制⚠) :
否则,您可以将它们包装在对象中,如下所示:
function f(fnName) {
var wrapper = {};
wrapper.a = function () { alert('a') };
wrapper.b = function () { alert('b') };
wrapper[fnName]();
}
f('a'); // alerts "a"
f('b'); // alerts "b"
您可以提取该值并使用eval()
一些DIV
$(文档).ready(函数(){
var$myObject=$(“#某物”);
var action=$myObject.data('action');
$myObject.单击(函数(){
评估(行动);
});
});
如果
测试在全局范围内,你可以做窗口[动作]()
,但我真的建议你重新考虑你的逻辑。“变量”在JS中不存在,在PHP中它们是不好的做法。它不起作用。.主要的想法是如果(动作='player_select'){player_select();}避免这种情况功能将超过10-15Quote的地方:我看到你已经问了一些问题,但还没有接受任何答案。也许你应该看看如何接受答案。接受答案让其他用户知道你已经解决了问题,这也有助于未来的访问者在ide中遇到类似的问题找出最有帮助的答案。你应该用:)
function f(fnName) {
var wrapper = {};
wrapper.a = function () { alert('a') };
wrapper.b = function () { alert('b') };
wrapper[fnName]();
}
f('a'); // alerts "a"
f('b'); // alerts "b"
<div id="something" data-action="alert('test')">SOME DIV</div>
$(document).ready(function() {
var $myObject = $("#something");
var action = $myObject.data('action');
$myObject.click(function() {
eval(action);
});
});