0

重複の可能性:
名前が文字列の場合に JavaScript 関数を実行する方法

これに苦労していますが、良いリソースが見つからないようです。

背景:ステップシステムを作成しており、属性内で方向/順序を渡していますdata-step="1"。これは、表示される ID (簡単な部分) を制御するだけでなく、正しい情報を取得するために呼び出す必要がある関数も制御します。

質問は基本的に、動的に構築する必要がある名前の関数をどのように呼び出すことができますか?

IE: step1(); step2();その番号を動的に追加したい場合を除きます。

// In an essense, what I'm trying to achieve:
// It's always called step and then followed by a number

[step + directionNumber](); // which isn't working

evalまた、私たちは皆、それが悪であることを知っているので、使用を避けようとしています:)

4

2 に答える 2

3

使用する

window["step" + directionNumber](); 

グローバルスコープで書く場合

function someName(){
}

window関数の名前someNameと値を使用して、グローバル オブジェクト ( ) のプロパティを定義しています。

と同等です

window.someName = function(){
}

したがって、関数を次のように呼び出すことができます。window.someName();ここでは、より便利です。window['someName']();

より良い解決策は、おそらく関数の配列を定義することです:

var stepFunctions = [];
stepFunctions[0] = function(){};

次に、それらを使用して呼び出すことができますstepFunctions[directionNumber]();

于 2012-11-28T18:43:22.360 に答える
1

関数をオブジェクトに格納して、名前で動的にアクセスします。

var funcs = {};

funcs.step1 = function(){ console.log("foo"); };
funcs.step2 = function(){ console.log("bar"); };

var text = "step",
    number = 1;

funcs[text + number](); // foo

++number;

funcs[text + number](); // bar
于 2012-11-28T18:51:36.133 に答える