0

この質問とその受け入れられた回答を何度も読んだ後、文字列として名前があるときに JavaScript 関数を実行する方法

私は自分でそれをやろうとしました。しかし、私が試したことがうまくいかなかったのは、今日の私の不運な日だと思います。テスト用にすでにフィドルを作成しました

//the function I want to invoke by String
function CheckMe() {
    return "haha";
}

//the function that will search for the function and invoke it
function InvokeChecking(func2check) {
    var fn = func2check;
    if (typeof fn === 'function') {
        return = fn(); //invoke the function
    }
}

//the event listener  ( ´ ▽ ` )ノ
$("#checker").click(function () {
    alert("event is working");
    alert(InvokeChecking("CheckMe"));
});​

http://jsfiddle.net/laupkram/qKHpu/2/

やりたいことは、string を使用して宣言した関数を呼び出し、その戻り値を取得することです。(fn==='function')したがって、引数を使用して SO でここで見たものに従いました。しかし、それは私にはうまくいかないようです。

私はどこで間違ったのですか?

:すでにfirebugでチェックしており、機能が存在します...スコープの問題に陥りましたか?か何か?

4

3 に答える 3

3

あなたが言及した関連する答えが言うように、名前による関数は以下によって呼び出されます:

var function_name = 'alert';
window[function_name]('hello world');

参照:http://jsfiddle.net/qKHpu/4/

于 2012-05-24T08:04:55.970 に答える
1

http://jsfiddle.net/qKHpu/8/

関数のリテラル名を引用符()なしで渡す必要があり"ます。そうしないと、リテラル文字列として扱われ、意味がありません。

alert(InvokeChecking(CheckMe)); // instead of alert(InvokeChecking("CheckMe"));
于 2012-05-24T08:05:19.010 に答える
0

http://jsfiddle.net/qKHpu/27/

それがいくつか動作することを確認してください..

于 2012-05-24T08:31:30.983 に答える