如何检查value属性是否等于对象键,如果相等,则获取键值并为其添加类

时间:2018-09-18 22:28:12

标签: javascript jquery json loops object

晚上,我有一个基于该下拉列表的更改的下拉列表,需要获取该值并检查其是否等于对象键,如果它的真值是对象键值并为其添加类。这是示例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 
    		}
    	}
    }

1 个答案:

答案 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>