Доступ к свойству динамически именованного объекта - PullRequest
0 голосов
/ 28 марта 2012

Я создаю объект 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 там, но я использую его в Интернетеприложение, так что я не против идти вперед и назад.)

Теперь о моей функции 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); 
}     

Alert: [object Object] .chk533570

function checkRules(justselected, state) {     
        alert(rulesObject.chk533570);
}     

Alert: 533577,503671,503667,604028,503661

Итак, любая идея, как правильно назвать это имя, чтобы я получил правильноеРезультаты?Я также пытался вообще не использовать 'chk', но объект javascript не любил полностью числовое свойство.

1 Ответ

1 голос
/ 28 марта 2012

obj.key - это то же самое, что и obj['key'], но во втором случае ключ может быть динамическим, поскольку это простое выражение JavaScript.

Так что вы можете просто использовать rulesObject['chk' + justselected]:

function checkRules(justselected, state) {     
        alert(rulesObject['chk' + justselected]);
}

Давным-давно люди использовали, кстати, alert(eval('rulesObject.chk' + justselected));.Пока это работает, не используйте это .Следует всегда избегать использования eval();и в этом случае в любом случае есть намного более чистый путь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...