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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> removeNode и FF 
V
    Опции темы
bars80080
Дата 23.12.2008, 17:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

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



есть кнопка в одной ячейке, эта кнопка призвана удалить часть таблицы <tbody> в котором она находится.
в ИЕ поступаю так:

Код

<input type="button" value="удалить" onclick="del_mars(this);" />


Код

function del_mars(x) {
    var el = x.parentNode.parentNode.parentNode;
    el.removeNode(true);
...
в ИЕ работает нормально. в ФФ жалуется, мол, removeNode() не функция
в принципе можно было бы подняться на уровень выше и удалить потомок removeChild , но получается надо указать какой, а это дополнительные упражнения с числами, а скрипт итак нагружен. нет ли здесь простейшего аналога? (догадаться не могу)
PM MAIL WWW   Вверх
bars80080
Дата 25.12.2008, 17:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

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



up
PM MAIL WWW   Вверх
ksnk
Дата 25.12.2008, 19:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



Ну, причина проста, removeNode нету в природе, если за природу принять w3c-шные измышления по поводу dhtml. FF почти полностью поддерживаеть измышления w3c, а вот IE думает про себя всякие гадости...

Добавлено через 9 минут и 26 секунд
Вот цитата по поводу с xpoint...
Цитата

 Илья Лебедев aka WingedFox(6/65)
Вот эта функция успешно эмулирует removeNode в MZ/FF
HTMLElement.prototype.removeNode = function(removeChildren) {
  if (Boolean(removeChildren))
    return this.parentNode.removeChild(this);
  else {
    var r=document.createRange();
    r.selectNodeContents(this);
    return this.parentNode.replaceChild(r.extractContents(),this);
  }
}



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
bars80080
Дата 25.12.2008, 21:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

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



я конечно понимаю, многие не любят ИЕ, но имхо, когда разработчики стандартов не обращают внимания на лучшие разработки, то меня лично воротит от них. могли бы собрать и от мозилы и от МС

ты же не скажешь, что в этом this.parentNode.removeChild(this); прослеживается гениальность разработчиков?
я бы честно говоря не додумался. в то и упёрся

спасибо, завтра попробую
PM MAIL WWW   Вверх
bars80080
Дата 26.12.2008, 11:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

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



отлично, просто сказочно работает
PM MAIL WWW   Вверх
bars80080
Дата 26.12.2008, 18:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

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



хотя нет, сказка со своими хитросплетениями

оказалось, что данный кусок жёстко влияет на ИЕ, а точнее происходит следующая неурядица:
я объявляю массив в общем коде, а затем вызываю его в функции, которая должна видеть его как глобальный. однако, в ИЕ он оказывается undefined, хотя в ФФ существует

Код

var mv = new Array();
function qw() {
    alert(mv);
}
qw();

для нейтрализации достаточно укрыть кусок кода от ИЕ:
Код

if(!window.ActiveXObject) {
    HTMLElement.prototype.removeNode = function(removeChildren) {
        if(Boolean(removeChildren)) { return this.parentNode.removeChild(this); }
        else {
            var r = document.createRange();
            r.selectNodeContents(this);
            return this.parentNode.replaceChild(r.extractContents(),this);
        }
    }
}


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


 




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


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

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