Как передать аргумент в функцию, вызываемой addEventListener?

Lana2

Новичок
Здравствуйте.Подскажите как можно передать elem в функцию deleteClassError.

Надо передавать elem(в нем находится поле с ошибкой) и удалять класс с полей ввода номера телефона.Поля телефон состоит из 2-х полей: в первом поле автоматически вводиться код страны, если страна выбрана, а во втором пользователь вводит номер телефона. Если оба поля заполнены то удалять класс у обоих.

form.php
PHP:
...
for (key in error)
{
    if (elem = searchError(form) {
        elem.className += ' error'; 
       elem.addEventListener("focus", deleteClassError, false); 
    }
}
...
forms.js
PHP:
...
deleteClassError: function() {
         this.className.replace('error', '');
           this.onblur = function() {
                  if (this.value = '') {
                     this.className += ' error';
                  } else {
                      this.className.replace('error', '');
                  }
           }
}
...
 

PHProgress

Новичок
Может быть так подойдет:

PHP:
.addEventListener("click",
                         function(){
                          some_function(someVar);
                         },
                         false);
 

Lana2

Новичок
теперь ошибку выдает на эту строку this.className.replace('error', '');

Ошибка:
Uncaught TypeError: Cannot call method 'replace' of undefined

что может быть не так?
 

jrip

Новичок
deleteClassError - это метод какого-то объекта? Тогда там this будет не тот что нужен.
Но в таком случае странно что он сюда elem.addEventListener("focus", deleteClassError, false); так передается, должна быть ошибка.

Вообще можно попробовать сделать вот так:
deleteClassError = function() {} вместо двоеточия, но в таком случае это должна быть именно отдельная функция а не метод объекта.
 

Lana2

Новичок
нет - это свойство объекта. Спасибо всем за помощь. Уже все работает

PHP:
deleteClassError: function() {
    this.className = this.className.replace('error', '');
   
    this.onblur = function() {
          var mobile = document.getElementById(mobile_field_1);
          if (this.value == '') {
             this.className += (' error');
          } else {
             if (this.className.indexOf('mobile_two_fields') !== -1) {
                 var classes = mobile.className.split(' '),
                 pos = classes.indexOf('error');
                       if (pos !== -1) {
                          classes.splice(pos, 1);
                       }
             mobile.className = classes.join(' ');
             }
          this.className.replace('error,'');
         }
    }
},
 
Сверху