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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с переменными, функциями и div-ами, При обновлении стр. запоминание дива 
V
    Опции темы
numerovan
Дата 6.10.2009, 10:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Здравствуйте светлые умы. Подскажите начинающему как поступить с данной ситуацией.

На страницу загружаются несколько div-ов (5 шт), каждый представляет из себя блок информации.
div 1 - главная страница сайта
div 2 - сервис
div 3 - расценка
div 4 - договор
div 5 - контакты
div 6 - о нас

далее работает яваскрипт, главную страницу показывает, а остальные прячет. При клике по меню плавно появляется нужный див, а предыдущий растворяется. Вот функции которые это дело осуществляют. Допустим я перешёл на пункт О НАС, после обновляю страничку и мне показывается СТАРТОВАЯ СТРАНИЦА ... Не подскажите как сделать чтоб если пользователь находится на нужном ему пункте и при обновлении страницы тот раздел остался на экране, а не переходил снова на ночало. Я примерно знаю как это сделать , но честно уже не хочу париться с этим кодом, боюсь натворить что нибудь и потом переделывать. Поэтому обращаюсь за помощью.
По поводу функций которые я написал ... это деревенский способ. Можно ли как-то этот код сокрасить ? Буду благодарен за помощь.

Код

        var key_out=100;
    var key_in=0;
    var set_interval;
    var set_interval_1;

function myAlphaOut(id){
        if( key_out < 0 ){
            clearInterval(set_interval);
            document.getElementById(id).style.filter = 'alpha(opacity=0)';
            document.getElementById(id).style.opacity = 0;
            document.getElementById(id).style.display = "none";
            key_out = 100;
            return ;
        }
        else{
            document.getElementById(id).style.filter = 'alpha(opacity=' + key_out + ')';
            document.getElementById(id).style.opacity = (key_out/100);
        }
        key_out -= 10;
    }
    function myAlphaIn(id){
        if( key_in > 100 ){
            clearInterval(set_interval_1);
            document.getElementById(id).style.filter = 'alpha(opacity=100)';
            document.getElementById(id).style.opacity = 1;
            key_in = 0;
            return ;
        }
        else{
            if(document.getElementById(id).style.display != "block"){
                document.getElementById(id).style.display = "block";
            }
            document.getElementById(id).style.filter = 'alpha(opacity=' + key_in + ')';
            document.getElementById(id).style.opacity = (key_in/100);
        }
        key_in += 10;
    }
    
    function move_alpha(el_0, el_1, el_2, el_3, el_4, el_5){
         // тут свитч подгоняет размер страницы в зависомости от выбранного пункта, в разных разделах не одинаковое количество высоты, а тут он подстравивается под выбранное.
                  switch(el_0){
            case ("home"): document.getElementById('td_body_height').style.height = 550 + "px"; break;
            case ("service"): document.getElementById('td_body_height').style.height = 1000 + "px"; break;
            case ("price"): document.getElementById('td_body_height').style.height = 1200 + "px"; break;
            case ("clients"): document.getElementById('td_body_height').style.height = 550 + "px"; break;
            case ("agb"): document.getElementById('td_body_height').style.height = 550 + "px"; break;
            case ("contact"): document.getElementById('td_body_height').style.height = 550 + "px"; break;
            case ("about_us"): document.getElementById('td_body_height').style.height = 550 + "px"; break;
            default: document.getElementById('td_body_height').style.height = 550; break;
        }
               // тут начинают они исчезать, то что было показано
        if(document.getElementById('transparency_' + el_1).style.display == "block"){
            set_interval = setInterval("myAlphaOut('transparency_" + el_1 + "')", 30);
        }
        if(document.getElementById('transparency_' + el_2).style.display == "block"){
            set_interval = setInterval("myAlphaOut('transparency_" + el_2 + "')", 30);
        }
        if(document.getElementById('transparency_' + el_3).style.display == "block"){
            set_interval = setInterval("myAlphaOut('transparency_" + el_3 + "')", 30);
        }
        if(document.getElementById('transparency_' + el_4).style.display == "block"){
            set_interval = setInterval("myAlphaOut('transparency_" + el_4 + "')", 30);
        }
        if(document.getElementById('transparency_' + el_5).style.display == "block"){
            set_interval = setInterval("myAlphaOut('transparency_" + el_5 + "')", 30);
        }
        if(document.getElementById('transparency_' + el_6).style.display == "block"){
            set_interval = setInterval("myAlphaOut('transparency_" + el_6 + "')", 30);
        }
               // а тут появляться то что выбрали
        if(document.getElementById('transparency_' + el_0).style.display == "none"){
            set_interval_1 = setInterval("myAlphaIn('transparency_" + el_0 + "')", 30);
        }
    }


Код

<body>
<!-- тут есть ещё кнопки которые вызывают функцию с нужными параметрами (я не стал их тут писать) -->
<div id="transparency_home" style="display:block" class="transparency_menu">content</div>
<div id="transparency_service" style="display:none" class="transparency_menu">content</div>
<div id="transparency_price" style="display:none" class="transparency_menu">content</div>
<div id="transparency_clients" style="display:none" class="transparency_menu">content</div>
<div id="transparency_agb" style="display:none" class="transparency_menu">content</div>
<div id="transparency_contact" style="display:none" class="transparency_menu">content</div>
<div id="transparency_about_us" style="display:none" class="transparency_menu">content</div>
</body>

PM MAIL   Вверх
IDVsbruck
Дата 6.10.2009, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Единственно правильный ответ - хранить информацию не на странице.
Хотя можно и в кукисы совать (наверняка подскажут), но, к примеру, я сторонник серверного решения: изначально сервер отдает страницу и записывает в сессию нужные параметры: начальная страница, язык и т.д. При клике на другой блок отсылается запрос на получение этого куска (так лучше, хотя можно и хранить все на странице), а заодно меняется переменная в сессии. Теперь если рефрешнуть страницу или кликнуть на другой язык, страница обратится к серверу и получит текущую страницу, которую и отобразит. Кукисы могут помочь даже более "глобально" - запомнить последнюю страницу и заже при открытии нового окна отобразить последнюю. Но это не очень "кошерно" - мало ли какая инфа может быть на главной, да и не делают обычно так.
PM MAIL   Вверх
numerovan
Дата 6.10.2009, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Скажите пожалуйста что плохого в этом методе ?
Единственное что я вижу так это при обновлении страницы перебрасывается на главную страницу ... а надо ли обновлять страницу ?
помоему это не часто делают ... на что кликают , то и получают ... По поводу обновления и запоминания дива, то я знаю что это можно решать путём яваскриптов ...
Так как сейчас всё больше и больше становится скоростных выделеных линий ... то почему бы и не загрузить допустим 200 кб инфы сразу ...?
Читатель , я хочу у тебя спросить, у тебя интернет на dial-up-е или всё таких выделинка ?
PM MAIL   Вверх
skyboy
Дата 6.10.2009, 16:02 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

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



Цитата(numerovan @  6.10.2009,  09:36 Найти цитируемый пост)
после обновляю страничку

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


 




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


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

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