使用动态变量获取for循环内对象的值

时间:2014-10-13 14:20:17

标签: javascript jquery for-loop

我正在尝试获取用户在for循环中提供的属性值(或更多)。


OBJECT:

RULES: { 
  "required": /.+/, 
  "numeric": /^\d*[0-9](|.\d*[0-9]|,\d*[0-9])?$/ 
}

FOR LOOP:

$("input").keyup(function() {

  var inputVal = $(this).val();
  var rules = $(this).data('rules').split(" ");

  for (var i = 0; i < rules.length; i++) {

     console.log(rules[i]); // OK - return "required" and "numeric"
     console.log(RULES.required); // OK - return "/.+/"

     console.log(RULES.rules[i]); // NOT OK

  };

});

MARKUP

<input data-rules="required numeric" type="text">

问题是它引发了一个错误:“无法读取未定义的属性'0'。

那我怎样才能找到“rule [i]”而不是“rule [i]”本身的价值呢? 为什么不自行翻译?

提前谢谢。

1 个答案:

答案 0 :(得分:1)

你正在做的事情:

RULES.rules[i]

你应该这样做:

RULES[rules[i]]

当您执行第一个时,Javascript首先在rules对象上查找RULES属性(但此属性不存在)然后它尝试访问元素0 rules属性,它不存在...因此你得到“无法读取属性'0'未定义”错误

如果要使用名称变量访问对象的属性,则不能再使用点表示法,并且必须使用方括号