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


Posted in Javascript onMarch 31, 2010

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; 
        } 
    } 
} 
//-->

打包下载地址
Javascript 相关文章推荐
jQuery AJAX回调函数this指向问题
Feb 08 Javascript
jQuery控制的不同方向的滑动(向左、向右滑动等)
Jul 18 Javascript
使用Plupload实现直接上传附件至七牛云存储
Dec 26 Javascript
JavaScript中实现单体模式分享
Jan 29 Javascript
JS显示表格内指定行html代码的方法
Mar 31 Javascript
JavaScript实现下拉列表框数据增加、删除、上下排序的方法
Aug 11 Javascript
神级程序员JavaScript300行代码搞定汉字转拼音
May 20 Javascript
详解Vue.js之视图和数据的双向绑定(v-model)
Jun 23 Javascript
Angular.js中上传指令ng-upload的基本使用教程
Jul 30 Javascript
JS使用tofixed与round处理数据四舍五入的区别
Oct 25 Javascript
用WebStorm进行Angularjs 2开发(环境篇:Windows 10,Angular-cli方式)
Dec 05 Javascript
详解Vue项目的打包方式(生成dist文件)
Jan 18 Vue.js
EXTJS内使用ACTIVEX控件引起崩溃问题的解决方法
Mar 31 #Javascript
ExtJS TabPanel beforeremove beforeclose使用说明
Mar 31 #Javascript
十个优秀的Ajax/Javascript实例网站收集
Mar 31 #Javascript
javascript中的107个基础知识收集整理 推荐
Mar 29 #Javascript
jquery CSS选择器笔记
Mar 29 #Javascript
Tinymce+jQuery.Validation使用产生的BUG
Mar 29 #Javascript
javascript delete 使用示例代码
Mar 29 #Javascript
You might like
PHP+DBM的同学录程序(1)
2006/10/09 PHP
PHP实现股票趋势图和柱形图
2015/02/07 PHP
YII Framework框架教程之日志用法详解
2016/03/14 PHP
Smarty模板配置实例简析
2019/07/20 PHP
Javascript中Eval函数的使用
2010/03/23 Javascript
关于JS管理作用域的问题
2013/04/10 Javascript
JavaScript的事件代理和委托实例分析
2015/03/25 Javascript
jQuery 如何给Carousel插件添加新的功能
2016/04/18 Javascript
jQuery操作动态生成的内容的方法
2016/05/28 Javascript
Jquery和Js获得元素标签名称的方法总结
2016/10/08 Javascript
bootstrap实现的自适应页面简单应用示例
2017/03/09 Javascript
Bootstrap表格制作代码
2017/03/17 Javascript
Bootstrap实现各种进度条样式详解
2017/04/13 Javascript
javaScript封装的各种写法
2017/08/14 Javascript
关于vue.extend和vue.component的区别浅析
2017/08/16 Javascript
vue 页面加载进度条组件实例
2018/02/05 Javascript
新版vue-cli模板下本地开发环境使用node服务器跨域的方法
2018/04/03 Javascript
如何检查一个对象是否为空
2019/04/11 Javascript
layui监听工具栏的实例(操作列表按钮)
2019/09/10 Javascript
[32:56]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第二场 12.11
2020/12/16 DOTA
Python内置数据结构与操作符的练习题集锦
2016/07/01 Python
Python各类图像库的图片读写方式总结(推荐)
2018/02/23 Python
python爬虫获取多页天涯帖子
2018/02/23 Python
Linux系统(CentOS)下python2.7.10安装
2018/09/26 Python
Python OpenCV视频截取并保存实现代码
2019/11/30 Python
jupyter notebook 恢复误删单元格或者历史代码的实现
2020/04/17 Python
Python+OpenCV图像处理——实现直线检测
2020/10/23 Python
利用HTML5 Canvas API绘制矩形的超级攻略
2016/03/21 HTML / CSS
巴西男士胡须和头发护理产品商店:Beard
2017/11/13 全球购物
《鸟的天堂》教学反思
2014/02/27 职场文书
2014年客服工作总结与计划
2014/12/09 职场文书
婚礼女方父母答谢词
2015/01/04 职场文书
SpringBoot SpringEL表达式的使用
2021/07/25 Java/Android
Nginx配置文件详解以及优化建议指南
2021/09/15 Servers
Win10 heic文件怎么打开 ? Win10 heic文件打开教程
2022/04/06 数码科技
台积电称即便经济低迷也没有降价的计划
2022/04/21 数码科技