我创建了一个javavascript对象,我打电话给rulesObject。这个想法是一个javascript对象,它包含我需要检查的所有规则,以启用/禁用从脚本开始时从mysql数据库动态生成的其他复选框。现在,我只是测试它与我知道创建我要找的场景两个规则,所以这里就是我的目标看起来像此刻:访问一个动态命名的对象属性
rulesObject = {
chk533570 : ["533577", "503671", "503667", "604028", "503661"],
chk503928 : ["533577", "533578","503671", "503666", "533576", "503667", "324201", "503221", "604028", "503668", "533580", "503669", "533579", "533581", "503670"]
};
现在我需要做的是从该对象访问信息。如果我做了一个简单的警报(rulesObject.chk533570),它的工作原理非常完美 - 给我的是我所需要的。但是,我需要做的是根据刚刚点击的内容访问特定规则。因此,举例来说,如果我点击看重“533570”的复选框,它会经过以下:
$('input').click(function(){
if(this.checked) {
checkRules(this.value, 'checked');
} else {
checkRules(this.value, 'unchecked');
}
});
(当然我使用jQuery在那里,但我使用它在整个Web应用程序等等我不介意来回走动。)
现在到我的checkRules函数。它仍然非常简单,因为它处于开始阶段 - 我只想提醒我刚刚选择的东西的价值。再一次,如果我确实警告(rulesObject.chk533570),即使在函数内部,我也会得到正确的结果,但我需要访问我刚选择的内容,所以我必须将字母'chk'添加到对象属性的开头名称,然后附加刚选择的值(在本例中为533570)。下面是我试图做到这一点的方法:
function checkRules(justselected, state) {
rulename= 'chk' + justselected;
currentrules = rulesObject.rulename;
alert(rulename);
alert(currentrules);
}
提示1:chk533570 红色警戒2:未定义
function checkRules(justselected, state) {
rulename= 'chk' + justselected;
alert(rulesObject.rulename);
}
警报:未定义
function checkRules(justselected, state) {
rulename= 'chk' + justselected;
alert(rulesObject + '.chk' + justselected);
}
警告:[对象的对象] .chk533570
function checkRules(justselected, state) {
alert(rulesObject.chk533570);
}
Alert:533577,503671,503667,604028,503661
那么,任何想法如何正确调用该名称,以便我得到正确的结果?我也尝试过没有'chk',但javascript对象并不喜欢完全的数字属性。
http://stackoverflow.com/questions/9709130/javascript-object-using-to-retrieve-values/9709167 – jbabey 2012-03-28 20:15:23