1

私は JavaScript を使い始めたばかりで、SO でこのような正確なシナリオをまだ見つけることができなかったので、運試しをするつもりです。外部 JS ファイルには、Web サイトでビデオ フィードを作成する 2 つの関数があります。

function getVideos() {
    //gets a list of videos
}

//callback function automatically called by getVideos()
function response(jsonData) { //can't change this line
    var resp = document.getElementById("resp"); //can change this line and any subsequent lines
    //parses data and populates resp
}

次に、HTML 側から getVideos() を呼び出すだけで、ビデオ フィードが作成されて入力されます。

ただし、同じページのさまざまな場所に複数のビデオ フィードを作成できるように、任意の要素 ID を response() に渡すことができるようにしたいと考えています。問題は、 response() の関数宣言を変更して別のパラメーターを含めることができないことです。または、少なくとも、私たちのビデオをホストしている会社によってできると信じ込まされていません.

response() を getVideos() でラップして、そこから要素 ID を渡そうとしましたが、response() が呼び出されず、考えられる唯一の解決策は、要素 ID をグローバル変数に格納することです。 、私が知っていることは、JavaScriptでは一般的にノーノーです。

私の質問は、弾丸を噛んでグローバル変数を使用するだけですか、それとも別の方法がありますか?

詳細については、現在の JS コード (クロージャーを含む) を次に示し ます: http://www.thebearrocks.com/Other/js/videoFeed/createVideoFeed.js私たちのビデオのホストからのフォロー: http://support.brightcove.com/en/video-cloud/docs/making-media-api-calls-dynamic-script-tags

4

2 に答える 2

0

引数を使用できますか?そのようです:

function response(jsonData) { //callback function automatically called by getVideos()
    var elemId = arguments.length<2 ? "resp" : arguments[1]+"";
    var resp = document.getElementById(elemId);
    //parses data and populates resp
}

または、次のようにデフォルト値を持つ 2 番目の引数を宣言します。

function response(jsonData, elemId) { 
    elemId = elemId || "resp";
    var resp = document.getElementById(elemId);
    //parses data and populates resp
}

この場合、関数は 1 つまたは 2 つの引数で呼び出すことができます

于 2013-04-13T15:11:29.067 に答える