jquery+json实现的搜索加分页效果

1.Web 里面有三个目录:
  1.1 content.htm    //这个文件直接运行就行
  1.2 js          //这里面有用到的几个js 文件,其中 以db 开头的就是数据源(就是json 串)
  1.3 css         //css 就不用说了
2. 直接运行 content.htm 就可以直接打开查看分页和搜索效果了
3. 原理很简单,只是用了javascript 的index 函数
核心代码:


代码如下:

/*
author: liulf
function:
var __db_cpcj=vCpcj;
var __db_cp=vCp;
var vCp={"cppage":[
{"cpdh":"A01000101","page":"1","ca":"1309-36-0","mc":"硫铁矿","ename":"Pyrite","bm":"黄铁矿"},
{"cpdh":"A01000201","page":"1","ca":"1309-36-0","mc":"硫精砂","ename":"Pyrite concentrate;Sulfur concentrate","bm":""},
{"cpdh":"A01000202","page":"1","ca":"1309-36-0","mc":"硫精矿粉","ename":"Powdered pyrite concentrate;Pyrites concentrate,powder;Sulfur concentrate,powder","bm":"硫精矿"},
{"cpdh":"A02000101","page":"1","ca":"","mc":"磷矿石","ename":"Phosphorus ore","bm":""},
{"cpdh":"A02000111","page":"2","ca":"","mc":"磷矿砂","ename":"Phosphorite grit","bm":""},
{"cpdh":"A02000201","page":"2","ca":"","mc":"磷矿粉","ename":"Phosphate rock powder","bm":""},
{"cpdh":"A03000101","page":"2","ca":"12447-04-0","mc":"硼矿石","ename":"Ascharite;Boric ore","bm":"硼镁矿"},
{"cpdh":"A04000101","page":"2","ca":"","mc":"钾长石","ename":"Potash feldspar;Potassium feldspars","bm":""},
{"cpdh":"A04000201","page":"2","ca":"12003-63-3","mc":"长石粉","ename":"Feldspar powder","bm":""},
{"cpdh":"A04000301","page":"2","ca":"","mc":"光卤石","ename":"Carnallite","bm":""}
]}
var vCpcj={"cjpage":[{"cjdh":"110634","cm":"拜耳光翌板材有限责任公司","pagen":"1701"},
{"cjdh":"110052","cm":"北京艾瑞斯水墨有限公司","pagen":"1701"},
{"cjdh":"110408","cm":"北京艾斯克医药技术开发有限公司","pagen":"1701"},
{"cjdh":"110010","cm":"北京爱德泰普膜制品厂","pagen":"1701"},
{"cjdh":"110165","cm":"北京安实创业科技发展有限公司","pagen":"1701"},
{"cjdh":"110134","cm":"北京安顺达装饰材料有限公司","pagen":"1701"},
{"cjdh":"110291","cm":"北京奥博星生物技术责任有限公司","pagen":"1701"},
{"cjdh":"110191","cm":"北京奥得赛化学有限公司","pagen":"1701"},
{"cjdh":"110454","cm":"北京奥克兰防水工程有限责任公司","pagen":"1701"},
{"cjdh":"110520","cm":"北京奥森特种润滑材料厂","pagen":"1701"}]}
奥森特
*/
function ObjSearch()
{
this.kw = '';
this.option = '';
this.displayId = '';
this.search = function()
{
// if(this.kw=='' || this.kw==null || this.kw.length<3)
// {
// alert('输入长度不能为小于3!');
// return;
// }
// switch(this.option)
// {
// //企业
// case '0':
// this.searchCpcj();
// break;
// //产品
// case '1':
// this.searchCp();
// break;
// }
OutputHtml(this);
}
this.searchCpcj= function()
{
var jsonObj = new Array();
var kw = this.kw;
// $('#'+this.displayId).html('');
// var displayId = this.displayId;
$(vCpcj.cjpage).each(function(index,content){
// var cjdhy = content.cjdh;
// var cm = content.cm;
// var pagen = content.pagen;
if(content.cm.indexOf(kw)!=-1)
{
// $('#'+displayId).append("<a href='#'>"+cm+" | "+pagen+"</a><br/>");
jsonObj.push({"cm":content.cm,"pagen":content.pagen});
}
});
return jsonObj;
}
this.searchCp = function()
{
var jsonObj = new Array();
var kw = this.kw;
// $('#'+this.displayId).html('');
// var displayId = this.displayId;
$.each(vCp.cppage,function(index,content){
// var cpdh = content.cpdh;
// var page = content.page;
// var ca = content.ca;
// var mc = content.mc;
// var ename = content.ename;
// var bm = content.bm;
if(content.mc.indexOf(kw)!=-1)
{
// $('#'+displayId).append("<a href='#'>"+mc+" | "+page+"</a><br/>");
jsonObj.push({"mc":content.mc,"page":content.page});
}
});
return jsonObj;
}
}

<!--//
function __$$(id){return document.getElementById(id);} //定义获取ID的方法
function GotoPage(num){ //跳转页
    Page = num;
    OutputHtml(os);
}
var PageSize = 20; //每页个数
var Page = 1; //当前页码
function OutputHtml(){
//选择的企业还是产品
var vobj = arguments[0];
    var vtmp1=vobj.option;    
    var siteList = '';
    switch(vtmp1)
    {
     //企业
     case '0':    
     siteList = os.searchCpcj();
     var obj = eval(siteList); //获取JSON
     //var sites = obj.cjpage;
     var sites = obj;
     break;
     //产品
     case '1':    
     siteList = os.searchCp();
     var obj = eval(siteList); //获取JSON
//     var sites = obj.cppage;
     var sites = obj;
     break;
    }    
    //获取分页总数
    var Pages = Math.floor((sites.length - 1) / PageSize) + 1;

if(Page < 1)Page = 1; //如果当前页码小于1
    if(Page > Pages)Page = Pages; //如果当前页码大于总数
    var Temp = "";

var BeginNO = (Page - 1) * PageSize + 1; //开始编号
    var EndNO = Page * PageSize; //结束编号
    if(EndNO > sites.length) EndNO = sites.length;
    if(EndNO == 0) BeginNO = 0;

if(!(Page <= Pages)) Page = Pages;
    __$$("total").innerHTML = "总页数:<strong class='f90'>" + sites.length + "</strong>  显示:<strong class='f90'>" + BeginNO + "-" + EndNO + "</strong>";

//分页
    if(Page > 1 && Page !== 1){Temp ="<a href='javascript:void(0)' onclick='GotoPage(1)'><<第一页</a> <a href='javascript:void(0)' onclick='GotoPage(" + (Page - 1) + ")'>上一页</a> "}else{Temp = "<<第一页 上一页 "};

//完美的翻页列表
    var PageFrontSum = 3; //当页前显示个数
    var PageBackSum = 3; //当页后显示个数

var PageFront = PageFrontSum - (Page - 1);
    var PageBack = PageBackSum - (Pages - Page);
    if(PageFront > 0 && PageBack < 0)PageBackSum += PageFront; //前少后多,前剩余空位给后
    if(PageBack > 0 && PageFront < 0)PageFrontSum += PageBack; //后少前多,后剩余空位给前
    var PageFrontBegin = Page - PageFrontSum;
    if(PageFrontBegin < 1)PageFrontBegin = 1;
    var PageFrontEnd = Page + PageBackSum;
    if(PageFrontEnd > Pages)PageFrontEnd = Pages;

if(PageFrontBegin != 1) Temp += '<a href="javascript:void(0)" onclick="GotoPage(' + (Page - 10) + ')" title="前10页">..</a>';
    for(var i = PageFrontBegin;i < Page;i ++){
        Temp += " <a href='javascript:void(0)' onclick='GotoPage(" + i + ")'>" + i + "</a>";
    }
    Temp += " <strong class='f90'>" + Page + "</strong>";
    for(var i = Page + 1;i <= PageFrontEnd;i ++){
        Temp += " <a href='javascript:void(0)' onclick='GotoPage(" + i + ")'>" + i + "</a>";
    }
    if(PageFrontEnd != Pages) Temp += " <a href='javascript:void(0)' onclick='GotoPage(" + (Page + 10) + ")' title='后10页'>..</a>";

if(Page != Pages){Temp += "  <a href='javascript:void(0)' onclick='GotoPage(" + (Page + 1) + ");'>下一页</a> <a href='javascript:void(0)' onclick='GotoPage(" + Pages + ")'>最末页>></a>"}else{Temp += "  下一页 最末页>>"}

__$$("pagelist").innerHTML = Temp;

//输出数据

if(EndNO == 0){ //如果为空
     __$$("pagelist").innerHTML='';
        __$$("content").innerHTML = "<h1>没有数据</h1>";
        return;
    }
    var html = "";

for(var i = BeginNO - 1;i < EndNO;i ++){
switch(vtmp1)
{
//企业
case "0":
html += "<a href='#' rel='bookmark' title=" +sites[i].cm+ ">";        
         html += "<p class='url'><span>" +sites[i].cm+ " | "+sites[i].pagen +"</span></p></a>";        
break;
//产品
case "1":
// if(sites[i].mc.indexOf(vobj.kw)==-1) continue;
html += "<a href='#' rel='bookmark' title=" +sites[i].mc+ ">";        
         html += "<p class='url'><span>" +sites[i].mc+ " | "+sites[i].page +"</span></p></a>";        
break;
}
    }
    __$$("content").innerHTML = html;
    clickShow(); //调用鼠标点击事件

//键盘左右键翻页
    document.onkeydown=function(e){
        var theEvent = window.event || e;
        var code = theEvent.keyCode || theEvent.which;
        if(code==37){
            if(Page > 1 && Page !== 1){
                GotoPage(Page - 1);

}
        }
        if(code==39){
            if(Page != Pages){
                GotoPage(Page + 1);
            }
        }
    }

//鼠标滚轮翻页
function handle(delta){
    if (delta > 0){
        if(Page > 1 && Page !== 1){
            GotoPage(Page - 1);
        }        
    }
    else{
        if(Page != Pages){
            GotoPage(Page + 1);
        }
    }
}
function wheel(event){
    var delta = 0;
    if (!event) /* For IE. */
        event = window.event;
    if (event.wheelDelta) { /* IE或者Opera. */
        delta = event.wheelDelta / 120;
        /** 在Opera9中,事件处理不同于IE
        */
    if (window.opera)
        delta = -delta;
    } else if (event.detail) { /** 兼容Mozilla. */
    /** In Mozilla, sign of delta is different than in IE.
    * Also, delta is multiple of 3.
    */
    delta = -event.detail / 3;
    }
    /** 如果 增量不等于0则触发
    * 主要功能为测试滚轮向上滚或者是向下
    */
    if (delta)
        handle(delta);
}
/** 初始化 */
if (window.addEventListener)
    /** Mozilla的基于DOM的滚轮事件 **/
    window.addEventListener("DOMMouseScroll", wheel, false);
    /** IE/Opera. */
    window.onmousewheel = document.onmousewheel = wheel;

}
//获取链接地址和网站名称
function showLink(source){
    var siteUrl = __$$("siteurl");
    var siteName = __$$("sitename");
    var description = __$$("description");

if(source.getAttribute("rel") == "bookmark"){
        var url = source.getAttribute("href");
        var title = source.getAttribute("title");
        siteUrl.innerHTML = "<a href='" + url + "' target='_blank'>"+ url +"</a>";
        siteName.innerHTML = title;
    }

}
//鼠标点击事件
function clickShow(){
    var links = __$$("content").getElementsByTagName("a");
    for(var i=0; i<links.length; i++){
        var url = links[i].getAttribute("href");    
        var title = links[i].getAttribute("title");
        links[i].onclick = function(){
//            showLink(this);
            return false;
        }
    }
}
//-->

打包下载地址

(0)

相关推荐

  • ajax返回的json内容进行排序使用sort()方法实现

    关键方法:sort()用于对数组的元素进行排序. return a.num-b.num是升序: return b.num-a.num;是降序 writeln在输出后面加\n,在文档里是换行,在html里是解释称空格. 复制代码 代码如下: $.post("json.json",function(data){ data.sort(function(a,b){return a.num-b.num;}); for(var i=0;i<data.length;i++){ var nums

  • JavaScript对JSON数据进行排序和搜索

    在使用AJAX获取数据时后台返回的大部分都是json数据,在进行程序开发时有时会需要直接对这些json数据在js程序中再进行一定的操作,如排序.搜索等,而不是通过AJAX请求由数据库进行这些操作. 今天我就教给大家如何使用数组的方法来实现这些操作: /*假设json就是后台传过来的json数据*/ var test=[ { price:15, id:1, description:'这是第一个数据' },{ price:30, id:3, description:'这是第二个数据' },{ pri

  • jQuery对JSON数据进行排序输出的方法

    本文实例讲述了jQuery对JSON数据进行排序输出的方法.分享给大家供大家参考.具体实现方法如下: $.getJSON('URl',function(data){ data.sort(function(a,b){return a.demoname-b.demoname}); for(i=0;i<data.length;i++){ alert(data[i].demoname) } }) 希望本文所述对大家的jQuery程序设计有所帮助.

  • 基于JavaScript实现Json数据根据某个字段进行排序

    一.首先给大家介绍js中内置的 sort() 方法 此方法默认是按字母顺序对数组中的元素进行排序的,说得更精确点,是按照字符编码的顺序进行排序. 看如下例子: 当数组中元素为 数字类型 时,排序结果与我们设想的完全不同,因为默认是按照字符编码的顺序进行排序的. 解决方案:sort() 方法接收一个可选参数(此参数必须是函数),我们可以自己定义排序规则,如下图 二.  对 json 排序的具体实现 /* * @description 根据某个字段实现对json数组的排序 * @param arra

  • json数据处理技巧(字段带空格、增加字段、排序等等)

    1.json数据的正常取值:json[i].fieldName 2.json数据的字段带空格:eval('json[' + i + ']["' + field + '"]') 3.json数据的赋值:eval('json[' + i + ']["' + field + '"]=' + jsonFilter.length); 4.json数据增加字段:循环所有数据,直接json[i].newField=defaultValue就可以了 5.json数据的排序:相当于数

  • json格式数据的添加,删除及排序方法

    本文实例讲述了json格式数据的添加,删除及排序方法.分享给大家供大家参考,具体如下: js数据格式和json数据格式,各有各的用处,就个人而言,json更好用一点,js自身的数组和对像限制比较多. 以js的数组举例: var a = ['1']; a[5] = 52; a.length //这儿的结果是6,也就是说,中间的key会自动补全,而值呢,是undefined 一.添加和删除 1.一维数组 test = {}; //空json对像 test['firstname'] = "tank&q

  • 利用jsonp跨域调用百度js实现搜索框智能提示

    项目中常常用到搜索,特别是导航类的网站.自己做关键字搜索不太现实,直接调用百度的是最好的选择. 使用jquery.ajax的jsonp方法可以异域调用到百度的js并拿到返回值,当然$.getScript也可以实现跨域调用js. ok,了解了jsonp的原理和应用后,我们看看百度的智能提示是如何做的 在chrome的调试窗口下看看百度搜索发出的请求.当输入关键字"a",请求如图: 用firebug看下请求的参数,如图: 请求方式:get请求 请求参数:wd明显是要搜索的关键字:cb是请求

  • javascript对JSON数据排序的3个例子

    一.适用于数字排序和字幕排序 json 的排序方法有很多种,这是其中最简单的一种方法. 复制代码 代码如下: var sortBy = function (filed, rev, primer) {     rev = (rev) ? -1 : 1;     return function (a, b) {         a = a[filed];         b = b[filed];         if (typeof (primer) != 'undefined') {      

  • jquery+json实现的搜索加分页效果

    1.Web 里面有三个目录: 1.1 content.htm //这个文件直接运行就行 1.2 js //这里面有用到的几个js 文件,其中 以db 开头的就是数据源(就是json 串) 1.3 css //css 就不用说了 2. 直接运行 content.htm 就可以直接打开查看分页和搜索效果了 3. 原理很简单,只是用了javascript 的index 函数核心代码: 复制代码 代码如下: /* author: liulf function: var __db_cpcj=vCpcj;

  • JQuery页面随滚动条动态加载效果的简单实现(推荐)

    Google阅读器上有一个AJAX scollLoad效果很不错,就是阅读项目时不需要翻页,浏览器滚动条往下拉到一定位置时自动加载新的一批项目进来,一直到所有项目加载完为止.要知道,数据量增加很频繁时,要通过定位页码来找到目标数据似乎并没有什么意义.我觉得用户体验成熟的WEB应用程序应当引导用户使用TAG或搜索等功能来找到目标数据.至于浏览数据,尤其是浏览最新的数据,利用浏览器滚动条来加载,是很好的尝试-- 我试着用jquery来实现这个功能.先要得到滚动条的总长属性值:scrollHeight

  • vue实现前台列表数据过滤搜索、分页效果

    本文实例为大家分享了vue实现列表数据过滤搜索.分页效果的具体代码,供大家参考,具体内容如下 job.vue页面 <style lang="scss"> .job-wrapper { padding-top: 50px; } .job-left { float: left; margin-right: 20px; padding: 20px; width: 310px; background: #fff; } .job-serach-title { margin: 8px

  • jQuery实现的瀑布流加载效果示例

    本文实例讲述了jQuery实现的瀑布流加载效果.分享给大家供大家参考,具体如下: demo.js: $(function(){ $('img').load(function(){ var box = $('.box'); var boxHeight = { leftBox:[], centerBox:[], rightBox:[] } for(var i=0;i<box.length;i++){ var now = i%3; //now的值为0,1,2 switch(now){ case 0:

  • JQUERY 实现窗口滚动搜索框停靠效果(类似滚动停靠)

    当页面需要显示的内容较多时,我们很多人采用分页的方法解决. 而有的时候,分页的效果却又是非常令人厌恶的.滚动条无疑是一种简单而又高效的一种方式.而这里,处于对用户体验的考虑,我使用Jquery实现了一种类似"滚动停靠"的效果.这样当我们向下滚动内容的时候,搜索框会"悬挂(停靠)"在窗口顶端. 这样做的好处是,当用户需要重新筛选内容的时候,不必再次向上滚动,随时可以输入条件进行搜索. 以下是我实现这个效果的思路: 首先,设计一个隐藏的搜索框.这个隐藏的搜索框的样式.事

  • 基于jQuery+JSON的省市二三级联动效果

    省市区联动下拉效果在WEB中应用非常广泛,尤其在一些会员信息系统.电商网站最为常见.开发者一般使用Ajax实现无刷新下拉联动.本文将讲述,利用jQuery插件,通过读取JSON数据,实现无刷新动态下拉省市二(三)级联动效果. HTML 首先在head中载入jquery库和cityselect插件. <script type="text/javascript" src="js/jquery.js"></script> <script ty

  • 实现PHP搜索加分页

    分页显示是浏览大量数据的一种方法.对于初学者来说常常对这个问题摸不着头绪,因此特地撰写此文对这个问题进行详细的讲解,力求让看完这篇文章的朋友在看完以后对于分页显示的原理和实现方法有所了解. 所有示例代码均使用php编写. 所谓分页显示,也就是将数据库中的结果集人为的分成一段一段的来显示. 请详细阅读以下代码,自己调试运行一次,最好把它修改一次,加上自己的功能. $wherelist=array(); $urlist=array(); if(!empty($_GET['title'])) { $w

  • jQuery实现仿腾讯视频列表分页效果的方法

    本文实例讲述了jQuery实现仿腾讯视频列表分页效果的方法.分享给大家供大家参考.具体如下: 这里使用jQuery仿腾讯视频列表分页效果,无刷新分页特效,点击分页按钮,无刷新进入下一页内容列表. 运行效果截图如下: 具体代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&q

  • jQuery zTree树插件动态加载实例代码

    需求: 由于项目中家谱图数据量超大,而一般加载方式是通过,页面加载时 zTree.init方法进行数据加载,将所有数据一次性加载到页面中.而在项目中家谱级别又非常广而深,成千上万级,因此一次加载,完全加载不出来.于是需要进行优化为动态加载(增量加载)的方式,以便数据加载,提高体验度. 解决断路: 这应该好办,只要找到父节点单击事件,然后进行数据加载,结点附加即可.时间紧,任务重,完全没给研究的时间.只能硬着上,随便搜索一个"zTree动态加载",出是出来了,标题也对,可里面的代码根本没

  • jquery+json实现分页效果

    Json作为一种轻量级的数据交换格式,由于其传输数据格式的方便性,今天偶然想将其应用于分页实现,分页做为web开发一个长久的话题,其应用的高效与重要性就不多说了 本文主要技术:反射机制,Json数据格式,jquery 为了应用的通用性,首先要根据反射机制,能将要返回的任意类型的结果对象转化成Json类型的格式. public static String toJSON(Object obj) { HashMap map = new HashMap(); Class c = obj.getClass

随机推荐