Я пытаюсь вызвать свойства объекта динамически.Я решил проблему с eval (), но я знаю, что eval - это зло, и я хочу сделать это лучше и безопаснее.Мой электронный код:
// onfocus
var classes = this.getAttribute('class').split(' ');
for(var i = 0; i < classes.length; ++i) {
if(classes[i].match(/val\- */) !== null) {
var rule = classes[i].substr(4);
var instruction = eval('validate.instructionTexts.'+ rule +'()');
tooltip.appendChild( document.createTextNode(instruction) );
}
}
И у меня также есть этот код:
// onblur
var classes = this.getAttribute('class').split(' ');
for( var i = 0; i < classes.length; ++i ){
if(classes[i].match(/val\- */) !== null) {
var rule = classes[ i ].substr( 4 );
var tooltip = document.getElementsByClassName( 'tooltip' );
for( i = 0; i < tooltip.length; ++i){
tooltip[ i ].style.display = 'none';
}
eval('validate.rules.'+ rule +'(' + (this.value) + ')');
}
проблема со вторым кодом заключается в том, что я хочу отправить строку в свою собственность.this.value = текст, который я печатаю в своем текстовом поле, поэтому я получаю правильную строку из this.value, но я получил эту ошибку.
, если я ввожу foo.Uncaught ReferenceError: foo не определено.Javascript думает, что я пытаюсь отправить переменную, но я хочу, чтобы она отправила строку.Как я могу решить эту проблему?