2016-09-09 7 views
5

これは明らかに、ボタンの背景色を変更するには、完全に非効率的な方法ですが、これは動作しませんなぜ私は思ったんだけど:新しいオブジェクトキーの作成や同じ関数内の変数としてパラメータを使用できますか?

<button id="blueButton">Button</button> 
var data = {}; 

function changeColor(e){ 
    data.e = "blue"; 
    $('#' + e).css('background-color', data.e); 
} 

changeColor(blueButton); 

変数は内部で使用することができる場合文字列(例:${variable})上記のシナリオでは使用できないのはなぜですか?

答えて

5

あなたはブラケット表記を使用する必要がある変数によって、オブジェクトのキーを設定するには: ジャバスクリプトのみstringまたはSymbolObjectなどのキーを可能にすることを覚えておいてください。あなたがキーに他のいくつかのタイプを使用したい場合は、私はあなたがそれぞれのボタンIDの変更背景色を保存する必要があると思うMap

var data = {}; 

function changeColor(e){ 
    data[e] = "blue"; 
    $('#' + e).css('background-color', data[e]); 
} 

changeColor(blueButton); 
+0

私はそれを見つけることができないと信じられません。ありがとうございました。私はそれができるようになるとすぐにそれを正しいものとしてマークします。 –

+0

@Hitmandsは質問に情報を追加してくれてありがとうございます。 –

0

を見て持っている必要があります。以下のコードはあなたに役立つはずです。あなたのコードで

var data = {}; 
 

 
function changeColor(e){ 
 
    data[e] = "blue"; 
 
    $('#' + e).css('background-color', data[e]); 
 
} 
 

 
changeColor('btn1'); 
 
console.log(data); 
 
changeColor('btn2'); 
 
console.log(data); 
 
changeColor('btn3'); 
 
console.log(data);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script> 
 
<button id="btn1">Button1</button> 
 
<button id="btn2">Button2</button> 
 
<button id="btn3">Button3</button>

にconsole.log、あなたは文字列をオブジェクトとしてIDを合格していないようです確認してください。 data.eeはデータのプロパティで、パラメータ値は渡されません)。

関連する問題