Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> <input type="image">, Как достучаться до этого элемента? 
:(
    Опции темы
izOne
Дата 4.8.2005, 11:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 232
Регистрация: 22.8.2003
Где: Украина, Киев

Репутация: нет
Всего: 4



Код

var l2 = document.forms.length;
for(var i = 0; i < l2; i++){
    var l3 = document.forms[i].elements.length;
    for(var j = 0; j < l3; j++){
        alert(document.forms[i].elements[j].type);
        if(document.forms[i].elements[j].tagName == 'INPUT' && document.forms[i].elements[j].type == 'image' && document.forms[i].elements[j].className == 'buttonedInit'){
            //buttonedAssign(document.forms[i].elements[j]);    
        }
    }
}


в алерте выскакивают все элементы формы кроме <input type="image">?

Код

<input type="image" name="Submit" value="Сохранить" src="/images/buttons/xp-save.gif" class="buttonedInit" onClick='alert(this.tagName);return false;'/>

Дает INPUT


PM Jabber   Вверх
o.s.a.
Дата 4.8.2005, 20:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Xo4y B MocKBy
**


Профиль
Группа: Участник
Сообщений: 312
Регистрация: 16.2.2005
Где: Ташкент

Репутация: 5
Всего: 15



Почему-то <input type="image"> не входит в массив elements,
но обратиться можно через id:
Код

<input type="image" id="image" name="Submit" value="Сохранить" src="/images/buttons/xp-save.gif" class="buttonedInit" onClick='alert(this.tagName);return false;'/>

Код

alert(document.getElementById('image').type);


Это сообщение отредактировал(а) o.s.a. - 4.8.2005, 20:48


--------------------
Не могу стоять, пока другие работают, пойду полежу.
PM MAIL ICQ   Вверх
izOne
Дата 4.8.2005, 23:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 232
Регистрация: 22.8.2003
Где: Украина, Киев

Репутация: нет
Всего: 4



o.s.a.
Дело в том, что на странице может быть несколько форм. Прописывать каждой ид облом, а образаться надо для того, что бы каждой img-кнопке задать реакцию на события, что-то типа:
Код

buttonedAssign = function(o){
    addEvent(o, 'mouseout', 'buttonMouseout');
    addEvent(o, 'mouseover', 'buttonMouseover');
    addEvent(o, 'mousedown', 'buttonMousedown');
    addEvent(o, 'mouseup', 'buttonMouseup');
}
buttonedMouseout = function(){
    this.className = 'buttonedInit';
}
buttonMouseover = function(){
    alert('onOver');
    this.className = 'buttonedHover';    
}
buttonMousedown = function(){
    this.className = 'buttonedPressed';
}
buttonMouseup = function(){
    this.className = 'buttonedHover';
}


вот и мне интересно почему <input type="image"> выпадает из elements и в FF и в IE?!
--------------------
Успех ждет каждого, но иногда всю жизнь.
PM Jabber   Вверх
Sardar
Дата 5.8.2005, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Интересное поведение...

Выход один, не пользоваться DOM0 коллекциями, а заюзать DOM1 getElementsByTagName()

Код
var inpts=document.body.getElementsByTagName("INPUT"); //здесь ВСЕ инпуты на странице



--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
izOne
Дата 5.8.2005, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 232
Регистрация: 22.8.2003
Где: Украина, Киев

Репутация: нет
Всего: 4



Sardar
спасибо. Так даже проще получилось.
Код

var inputs = document.getElementsByTagName('INPUT');
for(var i = 0; i < inputs.length; i++){
    if(inputs[i].type == 'image' && inputs[i].className == 'buttonedInit'){
        inputs[i].addEventListener('mouseout', 'buttonedMouseOut', true);
        alert(inputs.length);
    }
}

buttonedMouseOut = function(){
    alert('onMouseOut');
}


только теперь не цепляется событие smile

Mozilla FF:
Код

Ошибка: [Exception... "'JavaScript component threw a null value as an exception' when calling method: 
[nsIDOMEventListener::handleEvent]"  nsresult: "0x8057001d (NS_ERROR_XPC_JS_THREW_NULL)"  
location: "<unknown>"  data: no]


Это сообщение отредактировал(а) Aliance - 15.8.2005, 20:47
--------------------
Успех ждет каждого, но иногда всю жизнь.
PM Jabber   Вверх
Sardar
Дата 5.8.2005, 19:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



А у меня ещё круче(глючная мозилла 1.0.6):
Код
Error: uncaught exception: null

Исключение на addEventListener.

Если ставить на традиционное событие inputs[i].onmouseout=buttonedMouseOut - то всё работает.

Я пока не знаю как это обьяснить... smile


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0628 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.