You can post now and register later.
If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.
Актуальные контакты:
Telegram: @Nikker_web
E-Mail: tarasevich.email@gmail.com
Портфолио https://www.behance.net/d4d4186e
Разрабатываю дизайн групп в соц сетях, сайтов, приложений, другой дизайн под заказ
Актуальные контакты:
Telegram: @Nikker_web
E-Mail: tarasevich.email@gmail.com
Разрабатываю дизайн групп в соц сетях, сайтов, приложений, другой дизайн под заказ
Портфолио https://www.behance.net/d4d4186e
Question
Maslakoff
Пришлось работать с CMS, которая выдает данные в виде JS-массива, а уже с ними приходится работать через JS на странице...
Задача была поставлена сделать по страничную разбивку данных.
И что бы код не пропадал просто так, решил разместить его здесь.
Следующий объект реализует по страничную разбивку JS данных, с возможностью использования нав-бара
var pager = {
data: [],
onPage: 5,
nowPage: 0,
init: function(){
this.data = [];
this.onPage = 5;
var parsedURL = new Array();
var sURL = location.search.substring(1).split('&');
for(var i=0; i<sURL.length; i++){
var one = sURL[i].split('=');
if(one[0] == 'page'){
this.nowPage = one[1];
}
}
},
setNewsLine: function( arr ){
for( var i=0; i<arr.length/5; i++ ){
this.data.push({
url: arr[5*i],
title: arr[5*i+1],
summary: arr[5*i+2],
image: arr[5*i+3],
time: arr[5*i+4]
});
}
},
setData: function( arr ){
this.data = arr;
},
setOnPage: function( num ){
this.onPage = num;
},
getPage: function( page_num ){
if( this.data.length < this.onPage ){
this.onPage = this.data.length;
}
var start = page_num * this.onPage;
var end = page_num * this.onPage + this.onPage;
if( start > this.data.length ){
start = 0;
end = this.onPage;
}
if(end > this.data.length){
end = this.data.length;
}
var ret = new Array();
while( start < end ){
ret.push(this.data[start]);
start++;
}
return ret;
},
getNowPageData: function(){
return this.getPage( this.nowPage );
},
getNavLine: function(){
var pages_count = Math.floor( this.data.length / this.onPage );
var ret = '<ul>';
for( var i=0; i<pages_count; i++ ){
if( i != this.nowPage ){
ret += '<li><a href="?page=' + i + '">' + (i+1) + '</a></li>';
}else{
ret += '<li class="now"><span>' + (i+1) + '</span></li>';
}
}
ret += '</ul>';
return ret;
}
}
Как пользовать?
К примеру данные у нас в таком виде:
Инициализируем объект и передаем в него массив:
Затем получаем все данные, которые принадлежат текущей странице:
Выводим данные циклом, затем выводим нав-бар:
for(var i=0; i<Peoples.length; i++){
document.write('<p><b>'+Peoples[i].name+'</b> '+Peoples[i].secondname+'</p>');
}
document.write(pager.getNavLine());
Этот скрипт может послужить наглядным примером работы со страницами в других языках программирования.
Пример для CMS M1 Webcontent(вывод ленты новостей)
Link to comment
Share on other sites
0 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.