我正在尝试在另一个中调用js函数,但使用该参数来指定函数。即根据传递的参数,它将调用不同的函数
function toggle(n){
if (sessionStorage['toggle'+n]== 0){
check+n();
}
else
}
因此,例如,如果参数'Balloons'作为 n 传递,那么它将调用函数checkBalloons()。 "check+n();"
目前尚未在此处工作。抱歉我缺少简单的js语法!
答案 0 :(得分:3)
如果在全局范围(浏览器)中定义了该函数,则可以执行以下操作:
window["check"+n]();
或者像Node.js这样的一些租户你可以从全局对象访问它。
global["check"+n]();
如果它是某个其他对象的一部分,那么你也会这样做。
obj["check"+n]();
也可以使用[]
约定访问对象上定义的函数和属性。即obj["propFuncName"]
将为您提供参考,因此在方法的情况下,您可以添加()
来调用它。
答案 1 :(得分:2)
如果该功能是全局的,您可以这样做:
window["check" + n]();
或者,你可以把你的函数放在一个像这样的对象中:
myNamespace = {};
myNamespace.checkSomething = function(){ /* ... */ }
// call it like this:
myNamespace["check" + n]();
答案 2 :(得分:1)
到目前为止的答案是正确的,但缺乏解释。
在JavaScript中,当该名称是字符串时,您无法通过名称调用函数。 可以做的是按名称从对象中检索值,如果该值恰好是函数,则可以调用它。例如:
var myObject = {};
myObject.myFunction = function() { alert('test!'); };
// Get the property on `myObject` called `myFunction`
var theFunctionLookup = myObject['myFunction'];
// Since that property was a function, you can call it!
theFunctionLookup();
在浏览器中,全局范围中定义的函数将附加到window
对象。例如,这有效:
function myFunction() { alert('test'); }
var theFunctionLookup = window['myFunction'];
theFunctionLookup();
您可以将最后两行缩短为一行:
function myFunction() { alert('test'); }
// Look up and call the function in one line.
window['myFunction']();
出于同样的原因,您可以使用动态计算的字符串来查找函数。
function checkBalloon() {
alert('checking balloon');
}
function toggle(n){
if (sessionStorage['toggle'+n]== 0){
window['check' + n]();
check+n();
}
}
toggle('Balloon');
答案 3 :(得分:0)
如果你这样做:
if (sessionStorage['toggle'+n]== 0){
window["check" + n]();
}
将起作用