Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.03.2009, 11:21
Аспирант
Отправить личное сообщение для gaolong Посмотреть профиль Найти все сообщения от gaolong
 
Регистрация: 29.06.2008
Сообщений: 35

window.event
Подскажите пожалуйста как изменить код чтобы в ФФ работало, ивент получает, но переменная current пишет что not defined.

function delete(evt)
{
evt = (evt) ? evt : ((window.event) ? window.event : null);
if(evt) 
{
var current = (evt.target) ? evt.target : event.srcElement;

while ( (current = current.parentElement)  && current.tagName !="TR");
current.parentElement.removeChild(current);
}	
		
}

Заранее спасибо.
Ответить с цитированием
  #2 (permalink)  
Старый 28.03.2009, 17:15
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

проблема решается примерно так:
1) ставишь firebug (http://firebug.ru/)
2) вставляешь в цикл console.log(current) (пишет на вкладку console firebug'а)
3) видишь, что цикл не выполняется
4) проверяешь с помощью console.log какое условие не выполняется
5) исправляешь ошибку или задаешь вопрос: "а какой аналог вот этой штуки в ff?"

p.s. я бы на твоем месте не добавлял лишние уровни вложенности:
if (! evt) return;

p.p.s. и поместил бы ; после while на новую строку, а то первое впечатление, что current.parentElement.removeChild(current); - тело цикла
p.p.p.s. имхо такая запись тернарного оператора читабельнее:
evt =   evt   ? evt 
              :( window.event   ? window.event 
                                : null );
Ответить с цитированием
  #3 (permalink)  
Старый 31.03.2009, 10:52
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

delete -- зарезервированное слово.

Вместо
Сообщение от gaolong
evt = (evt) ? evt : ((window.event) ? window.event : null);
evt= evt || window.event;


Вместо
Сообщение от gaolong
var current = (evt.target) ? evt.target : event.srcElement;
var current = evt.target || evt.srcElement;


Вместо
Сообщение от gaolong
while ( (current = current.parentElement) && current.tagName !="TR");
while (current.tagName != 'TR')
    current = current.parentNode;

Во-первых, так понятней. Во-вторых, в вашем случае не удалится нужный tr, если событие произошло на нем самом (или так и нужно?). Ну и наконец, в-третьих, свойства parentElement нет, в чем у вас и ошибка.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
event.srcElement.id Sergeo Events/DOM/Window 6 15.06.2008 14:10