Алгоритм в размещенном коде выглядит слишком сложным, если задача состоит в том, чтобы получить доступ к свойству myObject
, имя которого взято из значения выбранного параметра выбранного элемента.
Проблемы с определениями myObject
решаются впример:
Кавычки могут быть помещены вокруг имен свойств при определении объектов JavaScript, , но практика часто просто следует требованиям синтаксиса JSON для текстовых строк - код требует только кавычкивокруг имен свойств, которые не соответствуют синтаксису идентификаторов.
Если кавычки в любом случае помещаются вокруг определений имени свойства, избегайте конечных пробелов в строке имени свойства - они становятся частью имени свойства и вызывают много путаницыпри попытке отладки кода.(Пост содержит пробелы в словах "Лондон", "Россия" и "Шоу")
Вот пример, который рассматривает только собственные свойства myObject
:
"use strict";
var myObject = {
london: { show: "#london1 #london2"},
russia: { show: "#moscow1, #moscow2"}
};
document.getElementById("dropdown")
.addEventListener("change",
function() {
var key, selector, option;
option = this.options[this.selectedIndex];
key = option.value;
if( myObject.hasOwnProperty(key)) {
selector = myObject[key].show;
console.log( "do something with " + selector);
}
else {
console.log("No key found for " + option.text);
}
}, false);
<select id="dropdown">
<option value="london">London</option>
<option value="russia">Russia</option>
<option value="problem">Problem</option>
</select>