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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> постраничный вывод таблицы 
:(
    Опции темы
EmilRegis
Дата 30.12.2009, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Здравствуйте...Написал на js динамически-формируемую табличку, если количество записей больше её размера, то соответственно делаю постраничный вывод типа <<1 2 3 ...45 46 47...123 124 >>
Написал для постраничного вывода следующий скрипт
Код

// функция отрисовывает номера страниц таблицы
    function pagecount(num, count){
        var str = '';
        if (count>9){
            if (num>4 && num<count-3){
                str = str + '<a href=\'javascript:nextprevpage("prev");\'> &laquo; </a>';
                str = str + '<a href=\'javascript:nextprevpage(1);\' > 1 </a>';
                str = str + '<a href=\'javascript:nextprevpage(2);\' > 2 </a>';    
                str = str + '...';
                str = str + '<a href=\'javascript:nextprevpage('+(num-1)+');\' > '+(num-1)+' </a>';
                str = str + ' ' +num+' ';
                str = str + '<a href=\'javascript:nextprevpage('+(num+1)+');\' > '+(num+1)+' </a>';
                str = str + '...';
                str = str + '<a href=\'javascript:nextprevpage('+(count-1)+');\' > '+(count-1)+' </a>';
                str = str + '<a href=\'javascript:nextprevpage('+count+');\' > '+count+' </a>';
                str = str + '<a href=\'javascript:nextprevpage("next");\'>    &raquo; </a>';
            }
            else{
                if(num <= 4){
                    if(num>1){
                        str = str + '<a href=\'javascript:nextprevpage("prev");\'> &laquo; </a>';
                        str = str + '<a href=\'javascript:nextprevpage(1);\' > 1 </a>';
                        if(num==4){
                            str = str + '<a href=\'javascript:nextprevpage(2);\' > 2 </a>';    
                            str = str + '<a href=\'javascript:nextprevpage(3);\' > 3 </a>';    
                        }
                        else if(num==3){
                            str = str + '<a href=\'javascript:nextprevpage(2);\' > 2 </a>';    
                        }
                        str = str + '' + num;
                        str = str + '<a href=\'javascript:nextprevpage('+(num+1)+');\' > '+(num+1)+' </a>';    
                    }
                    else if(num==1){
                        str = str + ''+num;
                        str = str + '<a href=\'javascript:nextprevpage(2);\' > 2 </a>';
                    }
                    str = str + '...';
                    str = str + '<a href=\'javascript:nextprevpage('+(count-1)+');\' > '+(count-1)+' </a>';
                    str = str + '<a href=\'javascript:nextprevpage('+count+');\' > '+count+' </a>';
                    str = str + '<a href=\'javascript:nextprevpage("next");\'>    &raquo; </a>';
                }
                else if(num>=count-3){
                    str = str + '<a href=\'javascript:nextprevpage("prev");\'>    &laquo; </a>';
                    str = str + '<a href=\'javascript:nextprevpage(1);\' > 1 </a>';
                    str = str + '<a href=\'javascript:nextprevpage(2);\' > 2 </a>';    
                    str = str + '...';
                    str = str + '<a href=\'javascript:nextprevpage('+(num-1)+');\' > '+(num-1)+' </a>';
                    str = str + ''+num;
                    if(num < count){
                        str = str + '<a href=\'javascript:nextprevpage('+(num+1)+');\' > '+(num+1)+' </a>';    
                        if(num==count-3){
                            str = str + '<a href=\'javascript:nextprevpage('+(count-1)+');\' > '+(count-1)+' </a>';
                            str = str + '<a href=\'javascript:nextprevpage('+count+');\' > '+count+' </a>';
                        }
                        else if(num==count-2)
                            str = str + '<a href=\'javascript:nextprevpage('+count+');\' > '+count+' </a>';
                        str = str + '<a href=\'javascript:nextprevpage("next");\'>    &raquo; </a>';
                    }
                }
            }
        }
        else{
            for(var i=1;i<=count;i++){
                if (i==num)
                    str = str + ' '+ i + ' ';
                else
                    str = str + '<a href=\'javascript:nextprevpage('+i+');\' > '+i+' </a>';
                if (i!=1) str = str + '<a href=\'javascript:nextprevpage("prev");\'> << </a>';
                if (i!=count) str = str + '<a href=\'javascript:nextprevpage("next");\'> >> </a>';
            }
        }
        d.getElementById('pagenum').innerHTML = str;        
    }
    
    // функция для перехода между страницами таблицы
    function nextprevpage(page){
        if (page == 'next')
            pagenum++;
        else if (page == 'prev')
            pagenum--;
        else pagenum = page;
        tabcreate(pagenum);
    }

Здесь функция tabcreate(pagenum) отрисовывает данную страницу таблицы на странице...
Написал я этот скрипт, но что-то он мне не нравится...чисто визуально как выглядит не нравится))) громоздкий, некрасивый...Если у кого-нибудь есть идеи по его оптимизации поделитесь пожалуйста

Добавлено @ 13:34
суть скрипта в том, что у первой и последней страницы не выводит соответственно стрелки << и >>
Если выбрана 5 страница и выше до 5й с конца, то появляются точки, типа <<1 2...4 5 6...123 124 >>,
иначе точек не появляется - <<1 3 ...123 124 >>
Так же показывается всегда страница перед и после выбранной - 13

Это сообщение отредактировал(а) EmilRegis - 31.12.2009, 08:13
PM MAIL   Вверх
EmilRegis
Дата 30.12.2009, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



и ещё вопросик по вёрстке...
У меня большая таблица, каждая страница - 15 строк, но на последней странице например 5 строк...Мне нужно, чтобы номера страниц  <<1 2 3 4 5 6...45 46 47...123 124 >> показывались всегда на одном и том же месте..в данный момент при переходе на последнюю страницу они прыгают туда где она кончается...

Подскажите пожалуйста как правильно позиционировать номера страниц по нижнему краю ..пока что я сделал у дива с таблицей height:375;

Это сообщение отредактировал(а) EmilRegis - 30.12.2009, 15:15
PM MAIL   Вверх
12345c
Дата 31.12.2009, 00:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Круглый
****


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

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



По вёрстке - свойство bottom вместо top для дива с номерами, с pos.:abs..
И в этот же див я бы вынес обработчик прерывания. Он ловит клик, берёт содержимое ссылки, и если это число, переходит на страницу, отменяет переход по ссылке. Если не число, а стрелки, делает другое. Тогда из <a> удаляются все длинноты, и вообще, можно ставить не <a href=#>, а <b>.

По реализации мне больше нравится логика, как в http://travel-info.ru/browse_blogs.php сейчас (группы страниц, кратные 5 (или 10). Но там PHP, алгоритма не увидите. Если нужны примеры кода, легко найти по http://www.google.com/search?client=opera&...tion+javascript .


--------------------
Google Code Playground - онлайн-отладка своих примеров HTML+JS без регистрации, с сохранением по URL, без кириллицы. Go
PM WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




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


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

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