Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 27.04.2010, 21:08
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 27.04.2010
Сообщений: 3,417

Повесить обработчик на несколько элементов
Народ, как повесить событие на все строки ввода разом?? Функция "clearDefault(elem)" - функция, стирающая значение строки ввода, если оно равно заданному. Её код:
clearDefault(elem){
 elem.value= elem.value==defaultValue ? "" : elem.value
}


window.onload=function(){
    var elems = document.getElementsByTagName('input');
    for(var i=0; i<elems.length; i++){
        if( (elems[i].type == "text" || elems[i].type=="password") & !elems[i].readOnly){
            if(isMSIE()) {elems[i].attachEvent("onfocus", function(){clearDefault(elems[i])})
            }
            else {elems[i].addEventListener("focus", function(){clearDefault(elems[i])}, false)
            }
        };
    }
}


Что в этой шняге неправильно?

P.S. isMSIE() - функция, определяющая, уж не эксплорер ли это часом: если эксплорер, возвращает true, если нет - соответственно, false.

Последний раз редактировалось trikadin, 27.04.2010 в 21:09. Причина: Дополнил описание функции.
Ответить с цитированием
  #2 (permalink)  
Старый 28.04.2010, 06:24
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

window.onload=function(){
    var elems = document.getElementsByTagName('input');
    for(var i=0; i<elems.length; i++){
        if( (elems[i].type == "text" || elems[i].type=="password") && !elems[i].readOnly){
            if(window.ActiveXObject) {elems[i].attachEvent("onfocus", (function(el){return function() {clearDefault(el)}})(elems[i]))
            }
            else {elems[i].addEventListener("focus", (function(el){return function() {clearDefault(el)}})(elems[i]), false)
            }
        };
    }
}


Вам нужно почитать про замыкания.
Ответить с цитированием
  #3 (permalink)  
Старый 28.04.2010, 19:41
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 27.04.2010
Сообщений: 3,417

Огромное спасибо... Хм... Почему return function, а не просто function? Вот тут:
return function() {clearDefault(el)}

Если несложно, дайте ссылку...
Ответить с цитированием
  #4 (permalink)  
Старый 28.04.2010, 21:16
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 27.04.2010
Сообщений: 3,417

Оу... Осознал всю глупость этой просьбы... Простите)
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Повесить событие click (jQuery) на весь документ, кроме нескольких элементов dabutch Events/DOM/Window 2 12.11.2009 18:52
Обработчик события: как делает jquery? Shasoft jQuery 35 22.04.2009 08:41
Измерения и прозрачность элементов BAnder Events/DOM/Window 13 03.02.2009 13:25
Как обработать несколько элементов подряд? vladymyrk jQuery 1 07.01.2009 19:33
Как повесить обработчик onchange на lookup spps Общие вопросы Javascript 0 09.09.2008 14:59