Показать сообщение отдельно
  #1 (permalink)  
Старый 12.07.2017, 11:26
Интересующийся
Отправить личное сообщение для DjFuntik Посмотреть профиль Найти все сообщения от DjFuntik
 
Регистрация: 15.01.2013
Сообщений: 19

Удаление лишних объектов
Народ поможите пожалуйста. На профи ни капли не придендую, делаю одну штучку себе именно для IE (не пинайте за него), она работает, НО, как всегда есть своё НО.

В шапке пишу такой код (кратко суть - при наведении на картинку рисует её увеличенное изображение)
ToolTip.offsetX = - (10 + IMG_size + 10)
ToolTip.offsetY = 17

function ToolTip(obj, text)
{
 if (!obj || obj.nodeType != 1) { throw "Illigal argument exception" }
 var tip = document.createElement("DIV")
 tip.className = 'tool_tip'
 tip.innerHTML = "<CENTER>Моё окно</CENTER>"
 tip.style.top = 10
 tip.style.left = 10
 document.body.appendChild(tip)

 obj.onmouseout = function (ev)
  { tip.style.visibility = 'hidden' }
 obj.onmousemove = function(ev)
  {
   tip.style.visibility = 'visible'
   if (window.event) ev = window.event
   if(ev.clientX+20+tip.offsetWidth+18 > document.body.clientWidth) { ToolTip.offsetX =- tip.offsetWidth - 20 } else { ToolTip.offsetX = 20 }
   if(ev.clientY+10+tip.offsetHeight+0 > document.body.clientHeight) { ToolTip.offsetY =- tip.offsetHeight - 10 } else { ToolTip.offsetY = 10 }
   tip.style.left = ev.clientX + document.body.scrollLeft + ToolTip.offsetX
   tip.style.top = ev.clientY + document.body.scrollTop + ToolTip.offsetY 
  }
}

function initToolTips()
{
  // предположительно тут надо как-то удалять старые объекты, прежде чем создавать новые

 var tags, tooltext
 for(var i = 0; i < arguments.length; i++)
  {
   tags = document.body.getElementsByTagName(arguments[i])
   for (var j = 0; j < tags.length; j++)
    if ((tooltext=tags[j].getAttribute('tooltip'))) { ToolTip(tags[j], tooltext) }
  }
}


В теле страницы скриптом вписываю картинку(и)
sss.innerHTML("<IMG tooltip='" + screens + "' src='" + screens + ".jpg'>")
....
initToolTips("img") // для инициализации всплывающих окошек

Ну и вот это самое тело формируется динамически по клику повторно переписывается через innerHTML с последующей инициализацией. Зачем так реализовано это не обсуждается, т.к. этот пример очень сильно обрезан для демонстрации только основного кода. А теперь суть самой проблемы!!!
При первой инициализации в теле страницы (если смотреть отладчиком) появляется DIV, ну как бы всё хорошо,так и должно быть. При повторной инициализации в теле страницы уже два DIV`а, ну и так далее по нарастающей. Т.к. истестна я гружу не только одну картинку, а большой объём контента, то страница разрастается очень сильно (видно только в отладчике, внешне всё замечательно) и сжирает кучу ресурсов. Потому предполагаю, что при инициализации надо как-то убирать ранее добавленные объекты!
Не силён вообще я пока что в этом, я только учусь, поможите
Ответить с цитированием