Forum Webscript.Ru
Программирование => JavaScript & JScript => Тема начата: Anthony от 13 Ноября 2006, 14:47:31
-
span = document.getElementById(spanId);
if(span)
setTimeout(function() {
span = null;
document.body.removeChild(span);
}, 50);
Кто-нибудь может объяснить мне неразумному, почему это не работает в ИЕ? Вариент с span.parentNode.removeChild(span); не работает так же.
-
А сам HTML выложи сюда, если он не многотонный конечно, точнее просто нужный кусок кода выложи
-
Span генерируется средствами js:
var span = document.createElement(\'SPAN\');
span.style.display = \'none\';
span.id = spanId;
document.body.appendChild(span);
-
Как я сразу не заметил... Убери span = null; и у тебя всё заработает. Это просто бессмысленно пытаться удалить узел которого по сути нет )))
Если бы ты использоватл не IE а FireFox, то нашёл бы ошбку очень быстро используя JavaScript Console
-
;)
span = null; Добавил специально, хотя ИЕ и без него падает.
-
Anthony:
span = null; Добавил специально, хотя ИЕ и без него падает.
Зачем?
Ну так сейчас проблема решена? Всё работает как надо?
-
Сорри, что не очень понятно выразился...
Не важно присутствует span=null; или нет, ИЕ падает все равно. Т. е. дело не в этом, падает он именно на удалении чаэлда.
-
А версия браузера какая?
-
IE v. 6.0.2900
-
Даже странно у меня всё работает. Ну а в других браузерах ты пробовал?
-
FF работает на ура, собственно в нем и писал скрипт изначально. Опера что-то тоже барахлит, но с ней пока не разбирался, может в чем другом проблема...
Если интересно: http://www.amity.ru/plugins/p890_monitor/monitor.php
А здесь: http://www.amity.ru/plugins/p890_monitor/main.js
функции get_data и reload_data. Вот на reload_data ИЕ и падает.
-
function reload_data(spanId,href)
{
span = document.getElementById(spanId);
if(span)
setTimeout(function() {
document.body.removeChild(span);
// span.parentNode.removeChild(span);
}, 100);
get_data(spanId,href);
}
Ну, вообще-то:
var span = document.getElement...
иначе эта переменная будет создана не в лексическом контексте функции. А дальше идет замыкание, а это дело темное и как там все замкнется с учетом, что span неизвестно где, никто не знает :). Попробуй внутри анонимной функции вызвать alert( span ). Действительно ли span содержит ссылку на элемент?
-
vasa_c
Возможно... После того, как внес соотв. изменение ИЕ виснуть не перестал правда, но я вроде нащупал тонкое место...
Спасибо!
-
Проблема была на самом деле связана с утечкой памяти. См. тему Удаление таблиц.