2016-05-05 11 views
1

これは私が(たとえば)持っているものです。関数のパラメータで渡されたvar名を知るには?

HTML:

<button id="playlist01"></button> 
<button id="playlist02"></button> 
<button id="playlist03"></button> 

のjQuery:

$(function() { 
    var playlist01 = []; 
    var playlist02 = []; 
    var playlist03 = []; 

    $("button").click(function() { 
    pushSong($(this).attr("id")); 
    }); 

    function pushSong(id) { 
    playlist??.push("whatever"); //playlist01, playlist02 or playlist03 ?? 
    } 
}); 

VAR名とIDを持つ各ボタンの配列があります。

私は<button>タグをクリックすると、ボタンのIDを持つ関数をパラメータとして呼び出し、その関数に渡されたIDで配列内の何かを押しますが、どうすればplaylist?を知ることができますか名?

ありがとうございました!

+0

使用するため(アレイを使用するように変更複数の変数ではなく) – Bergi

答えて

2

キーがIDに対応するオブジェクトにプレイリスト配列を配置します。次にidを使用して正しいプレイリスト配列を取得し、次に押します。

var playlists = { 
    playlist01: [], 
    playlist02: [], 
    playlist01: [], 
}; 

function pushSong(id) { 
    playlists[id].push("whatever"); 
} 
+0

それは動作します!新しいプレイリスト04をプレイリストに動的にプッシュするにはどうすればよいですか? (私が名前を知らないのであれば、 'playlists.push($ foo:[]);'のようなvarに入れています) –

1

すべての変数のスコープは、最も近いclosureです。すべての機能はクロージャーです。

function pushSong(id) { 
    this[id].push("whatever"); 
}; 

Call機能を、現在のthis渡すことによって:あなたの変数は、pushSong機能への外側の関数のコンテキストを渡す場合、あなたが行うことができ、スコープと外側の関数のコンテキストにあるので、変数がスコープされています。あなたは、可能な各プレイリストのためのケースを持っているので、

pushSong.call(this, $(this).attr("id")); 

Learn more about scope and context in JavaScript.

-1

は、switch文を使用し、そうでなければ、他のif文のシリーズを使用する必要がありますs。

http://www.w3schools.com/js/js_switch.asp

または二重アレイプレイリスト[] []と[1] []の最初の[2] []コレクションなどの第二

関連する問題