0

動的にロードされる外部 JavaScript ファイルがあり、oncomplete=呼び出されるたびに値が増加する変数があります。例えば:

  • 初めて:​​ external.js?oncomplete=sayHello1
  • 2回目: external.js?oncomplete=sayHello2
  • 3回目: external.js?oncomplete=sayHello3

そのため、毎回 oncomplete= コールバックを実行する関数を動的に作成する必要があります。つまり、次の名前の関数を作成する必要があります。

  • sayHello1();
  • sayHello2();
  • ...等

これは、特定の名前の関数を作成する私の現在のコードです:

var sayHello = function (){
    console.log('hello');
};
sayHello();

問題は、jQuery で動的に生成された名前を持つ時間関数を作成するにはどうすればよいかということです。

4

1 に答える 1

2

これは純粋な JavaScript の質問です。簡単にするためにグローバル スコープ (ウィンドウ) を想定すると、

var sayHello = function () { /* body */ };

と同等です

window['sayHello'] = function () { /* body */ };

明らかに、そのようにグローバル スコープを汚染したくないので、他のオブジェクトに対して同じことを行うことができます。

dynamicFunctions = {};

var oncomplete = 'sayHello1';
dynamicFunctions[oncomplete] = function () { console.log('hello'); };

dynamicFunctions[oncomplete]();
// outputs hello to the console

ただし、心に留めておくべきことの 1 つは、そもそもなぜこのようにしているのかということです。あなたの特定の要件がよくわからないので、このようなことができない理由はありますか?

// load external.js?oncomplete=sayHello&increment=4
sayHello(increment);
于 2015-02-02T20:28:49.080 に答える