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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> непонятки с IE или почему не пропадает div.... непонятное поведение скрипта в MS IE 
:(
    Опции темы
micolo
Дата 6.12.2006, 03:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 6.12.2006

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



Доброго времени суток!
У меня такой вопрос. Существует следующий код на javascript:
Код



<script>
function viewhint(event)
{
offset=32;

  var infoWin=new ContentPopup("teswt.php?id"+ event,event,offset,offset,320,320);

  
}

function ContentPopup(url,ev,x,y,w,h)
{
  var bod=document.createElement("div");
  bod.id = 'myDivId'+ev;
  document.body.appendChild(bod);
  this.iframe=document.createElement("iframe");
  this.iframe.className="winContents";
  this.iframe.src=url;
  bod.appendChild(this.iframe);
}

function hidehint(ev)
{
var wins=document.getElementById('myDivId'+ev);
wins.style.display='none';
}
</script>


   <table   border="0" cellpadding="0" cellspacing="0">
  <tr>
    <td height=20>
   <a href="java script:void(0)" onmouseout='javascript:hidehint(1);' onmouseover='javascript:viewhint(1);'>test 1</a>
    </td>
</tr>
 <tr>
    <td height=20>
 <a href="java script:void(0)" onmouseout='javascript:hidehint(2);' onmouseover='javascript:viewhint(2);'>test 2</a>
    </td>
    </tr>
    </table>


Ситуация в следующем - в Mozille Firofox - данный скрипт срабатывает на ура, т.е. слой появляется и изчезает. В MS IE при первом наведении срабатывает, а потом раз через десять, т.е. слои плодятся но удаляются лишь малая часть из них. В чём тут дело? Может кто сталкивался с такой проблемой? 
PM MAIL   Вверх
12345c
Дата 6.12.2006, 06:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Круглый
****


Профиль
Группа: Vingrad developer
Сообщений: 2018
Регистрация: 26.12.2005
Где: наша не пропадала ?

Репутация: 57
Всего: 101



Очевидная ошибка такая, что обращение идёт к ИД, которых сделано много одинаковых. До тех пор пока иды уникальны, слои в ИЕ нормально скрываются. FF как-то решает эту задачу. (И надо заметить, что реально слой не исчезает, а занимает много памяти на фрейм. Наверное, это чисто для демонстрации.)
PM WWW   Вверх
micolo
Дата 6.12.2006, 06:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 6.12.2006

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



так нет там динаковых ID у слоёв, все разные - в том то и дело...
насчет демонстрации - да это примерно так, и сразу встречный  вопрос - можно  удалить динамический div, чтобы не висел в памяти
PM MAIL   Вверх
12345c
Дата 6.12.2006, 07:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Круглый
****


Профиль
Группа: Vingrad developer
Сообщений: 2018
Регистрация: 26.12.2005
Где: наша не пропадала ?

Репутация: 57
Всего: 101



Посмотрите внимательнее. bod.id = 'myDivId'+ev; ev равно 1 или 2.

Удалить - removeChild(), replaceChild() и replaceNode()
PM WWW   Вверх
micolo
Дата 6.12.2006, 07:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 6.12.2006

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



каждый раз при обработке события  onmouseover  появляются div c ID равными:

myDivId1
myDivId2
myDivId3
и т.д.

и соответственно при onmouseout  созданный только что div с ID например myDivId1 должен скрыться, и по идеи так до бесконечности smile
или я что-то не так понимаю?
если несложно можно исправить мой пример и сделать как надо, или объяснить как надо? буду очень признателен!
PM MAIL   Вверх
Zeroglif
Дата 6.12.2006, 09:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 644
Регистрация: 22.9.2005

Репутация: 28
Всего: 66



Цитата(micolo @  6.12.2006,  07:47 Найти цитируемый пост)
или я что-то не так понимаю?

У вас ID уникален относительно ссылок в таблице, каждая ссылка имеет свой уникальный номер аргументом в функциях (1,2,...), но проблема в том, что при наведении мыши на ссылку вы каждый раз создаёте объект (DIV) с одним и тем же ID. Такие DIV-ы плодятся как грибы, ибо при отведении мыши вы не удаляете созданный ранее DIV, а просто его скрываете. Получаем много-много скрытых слоёв. 

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


 




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


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

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