晚上,我有一个基于该下拉列表的更改的下拉列表,需要获取该值并检查其是否等于对象键,如果它的真值是对象键值并为其添加类。这是示例js代码。
var attrValue = "london";
var myObject = {"london ":
{"show ":"#london1 #london2 "},
"russia ":
{"show ":"#moscow1, #moscow2"}};
function mytest(myObject, key) {
for (var i = 0; i < myObject.length; i++) {
var keys = myObject.key[i];
if (attrValue == keys) {
//get London keys and use value to add show or hide class
}
}
}
答案 0 :(得分:0)
如果任务是访问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>