我正在尝试获取用户在for循环中提供的属性值(或更多)。
RULES: {
"required": /.+/,
"numeric": /^\d*[0-9](|.\d*[0-9]|,\d*[0-9])?$/
}
$("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
};
});
<input data-rules="required numeric" type="text">
问题是它引发了一个错误:“无法读取未定义的属性'0'。
那我怎样才能找到“rule [i]”而不是“rule [i]”本身的价值呢? 为什么不自行翻译?
提前谢谢。
答案 0 :(得分:1)
RULES.rules[i]
你应该这样做:
RULES[rules[i]]
当您执行第一个时,Javascript首先在rules
对象上查找RULES
属性(但此属性不存在)然后它尝试访问元素0
rules
属性,它不存在...因此你得到“无法读取属性'0'未定义”错误
如果要使用名称变量访问对象的属性,则不能再使用点表示法,并且必须使用方括号