0

以下のコードは、単一行の配列内の特定の ID ごとにクリック関数を生成します。コメント解除されたコードを使用すると、「文字列は関数ではありません」というエラーが表示されます。コメント化されたコードのコメントを外し、単一行の配列にコメントを付けると、うまく機能します。ただし、明らかな理由から、私は単一行配列を使用したアプローチを好みます。

誰か良いアドバイスをくれませんか?私は正しい道を進んでいますか?

前もって感謝します。

// callme
function callme() {
    alert("call me");
    return true;
}

// create javascript object
//var adapter = {};
// set values - key contains: ID associated with link, button or tab - value contains:   the function to call
//adapter['callme'] = callme;
//adapter['callme1'] = callme1;
//adapter['callme2'] = callme2;
//adapter['callme3'] = callme3;

var adapter = ["callme", "callme1", "callme2", "callme3"];

// foreach the object - key as ID - value as associated function
$.each(adapter, function(index, value) {
    // click on listed ID
  $("#"+ value).click(function() {
    // call associated function
        value();    
    });
    // end foreach
});
4

2 に答える 2

3

スコープに少し依存しますが、一般的な考え方は、角括弧表記を使用して関数への参照を取得し、それを実行できるということです。たとえば、次のようになります。

window[value]();

関数がグローバル スコープ (オブジェクトのプロパティ)であるcallme()と仮定すると、最初の反復と同等になります。callmewindow

于 2013-04-12T13:32:01.273 に答える