1. Задавайте здесь вопросы о коде, которые не подходят в другие разделы, такие как:
    Дизайн > Верстка
    PHP > Как сделать на PHP
    Скрыть объявление

Трабл с JavaScript

Тема в разделе "Web Coding", создана пользователем terkin, 9 июл 2007.

Статус темы:
Закрыта.
Модераторы: latteo
  1. terkin

    terkin

    Регистр.:
    9 дек 2006
    Сообщения:
    513
    Симпатии:
    162
    На странице имеется раскрывающееся меню которое реализовано при помощи такого JS
    Код:
    <script language="JavaScript"><!--
    function JS(menu,image) {//
       nameDiv=eval("document.getElementById(menu)");
       myimage=eval("document.getElementById(image)");
       if(nameDiv.style.display=='none')
       {
       nameDiv.style.display='block';
       myimage.src='img/minus.gif';
       myimage.title='Свернуть'
       }
       else
       {
       nameDiv.style.display='none';
       myimage.src='img/plus.gif';
       myimage.title='Развернуть'
       }
    }
    //-->
    </script>
    
    В теге <body onLoad="JS('menu1','image1');"> я запускаю его на выполнение что бы при загрузке страницы меню автоматически расскрывалось, всё работает но есть такие грабли что скрипт запускается только после того как подзагрузятся все рисунки на странице, а мне нужно что бы это происходило как можно быстрее.
     
  2. ozor

    ozor Писатель

    Регистр.:
    22 дек 2006
    Сообщения:
    7
    Симпатии:
    1
    как насчет прелоадера:
    Код:
    // Вставить в хеаде документа
    myImage1 = new image();
    myImage1.src = 'img/minus.gif'
    myImage2 = new image();
    myImage2.src = 'img/plus.gif'
    
    --
    У меня тут возник вопрос, очевидно я в чем-то не шарю. Зачем использовать евал:
    myimage=eval("document.getElementById(image)"); :eek:
    когда myimage = document.getElementById(image);
    тоже отлично сработает
     
  3. terkin

    terkin

    Регистр.:
    9 дек 2006
    Сообщения:
    513
    Симпатии:
    162

    eval действительно не обязателен а вот прелоадер тут мне не поможет так как на странице довольно много изображений, не хочеться все их прелоадить, просто нужно как то добиться что бы сразу выполнялся скрипт а потом уже ишла подзагрузка изображений
     
  4. spacer123

    spacer123 Постоялец

    Регистр.:
    8 дек 2006
    Сообщения:
    74
    Симпатии:
    9
    Или аплоадить картинки заранее (самый нормальный вариант) или делать в скрипте паузу (всеравно будет по-дурацки)
     
  5. terkin

    terkin

    Регистр.:
    9 дек 2006
    Сообщения:
    513
    Симпатии:
    162
    Аплоадить заранее тоже не вариант в том случае если у меня довольно много счётчиков из за них собственно и возникают тормоза :(
     
  6. murzik

    murzik

    Регистр.:
    26 май 2007
    Сообщения:
    169
    Симпатии:
    30
    тогда бомби счетчики:) а лучше сделай еще сайтик (по тематике данного) и открывай его автоматом в pop-up окне. Ну и разгрузишь всю рекламу уже на 2 сайта.
     
  7. terkin

    terkin

    Регистр.:
    9 дек 2006
    Сообщения:
    513
    Симпатии:
    162
    Та просто я вот в инете видел пару статей о том как можно преостанавливать загрузку изображений с помощью JS, ну там для каждого браузера свой код, и что то у меня толком ничего не вышло, всеравно мне кажется что должен быть выход нормальный из ситуации
     
  8. spacer123

    spacer123 Постоялец

    Регистр.:
    8 дек 2006
    Сообщения:
    74
    Симпатии:
    9
    Сообственно я уже запутался, в чем же проблема? Скрипт всегда начинает выполнятся, когда до него дойдет рендер из браузера. Не важно грузятся при этом картинки или нет. Это параллельные явления.
     
  9. terkin

    terkin

    Регистр.:
    9 дек 2006
    Сообщения:
    513
    Симпатии:
    162
    Ну вот рендер до него доходит в последнюю очерендь - после того как будут загружены все картинки, а мне нужно что бы он выполнялся до их загрузки
     
  10. ozor

    ozor Писатель

    Регистр.:
    22 дек 2006
    Сообщения:
    7
    Симпатии:
    1
    Могу предложить еще один вариант.
    Вставь обе картинки в блок, одну сделай display:none; а другую display:block

    К примеру, их id=myimg1 и id=myimg2

    тогда и код подправь:
    Код:
    if(nameDiv.style.display=='none')
    {
       nameDiv.style.display='block';
       myimg1.style.display='block';
       myimg2.style.display='none';
    }
    else
    {
       nameDiv.style.display='none';
       myimg1.style.display='none';
       myimg2.style.display='block';
    }
    загрузятся они обе, а отображаться будет только одна
    единственное, что все-равно придется подгружать их. а иначе никак.
    или заранее, или так как у тебя
     
Статус темы:
Закрыта.