Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在jquery中将变量作为函数调用_Javascript_Jquery - Fatal编程技术网

Javascript 在jquery中将变量作为函数调用

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'); } 在这里,函数名正在测试,变量操作

就像在PHP中一样,我需要一个变量

我从html中得到一个数据类型,这个变量实际上是js代码中的一个函数

我明白了,我要叫它。 每次都不一样,所以我不知道到底是哪一个

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);
    });    
});