2016-09-09 24 views
5

Jest to oczywiście całkowicie nieskuteczny sposób zmienić kolor tła przycisku, ale zastanawiam się, dlaczego to nie działa:Czy można użyć parametru do utworzenia nowego klucza obiektu i jako zmiennej w tej samej funkcji?

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

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

changeColor(blueButton); 

Jeśli zmienna jest w stanie być stosowany wewnątrz ciąg znaków (np. ${variable}) dlaczego nie można go zastosować w powyższym scenariuszu?

Odpowiedz

5

Aby ustawić klucz obiektu o zmiennej należy użyć notacji Wspornik: Należy pamiętać, że JavaScript pozwala tylko string lub Symbol jak Object klucza. Jeśli chcesz użyć innego typu, aby wprowadzić trzeba spojrzeć na Map

var data = {}; 

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

changeColor(blueButton); 
+0

Nie mogę uwierzyć, że nie mogłem tego znaleźć. Dziękuję Ci. Zaznaczę to jako poprawne, jak tylko pozwoli. –

+0

@ HITmands dzięki za dodanie informacji w pytaniu, chociaż byłbym wdzięczny za pozostawienie komentarza w pierwszej kolejności. –

0

myślę, że trzeba przechowywać zmieniony kolor tła każdego przycisk ID. poniższy kod powinien ci pomóc. sprawdzić console.log

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>

W kodzie wydaje zdałeś id jako obiekt nie ciąg. data.e, gdzie e jest właściwością danych, nie przekazuje wartości parametrów.