【菜鸟手打js】第三篇-带伪数据分页

忙完工作,继续写。

在后台手动拼接了一个json数据,把数据列表页写出来。当然翻页请求获取到的都是这串数据,以后改成搜索数据库的就好了。

另外把js和css都独立出来了,看起来清晰点。

先贴效果:显示效果还得自己调css,数据列宽度也得手动调,这样生成的页面太死了,还得再去看看UI框架学学。


html代码:清理掉干净多了。

<!DOCTYPE html>
<html>
	<!--
	*Data:2014-02-25 
	*Author:Harry
	*Version:Bate	1.0	
	*Tested:IE6、IE8、IE9、IE10、Chrome28.0
	*PS:border-radius为Css3新增边框半径属性,IE6下无效
	-->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>翻页</title>
<link rel="stylesheet" type="text/css" href="style1.3.css" />
<script type="text/javascript" src="jquery-1.4.4.js"></script>
<script type="text/javascript" src="mypage.js"></script>
<script type="text/javascript">
		//参数说明:(当前页码,获取数据的接口,每页显示几行,翻页条显示多少个页码/除首尾)显示页码数太长会换行
		$(function(){
			//静态实现先这样
			$("#page1").changepage(2,"http://localhost:8095/ServerManageWeb/TestforPage",2,15);
			$("#page2").changepage(1,"http://localhost:8095/ServerManageWeb/TestforPage",2,10);
			})
		
			//-->
</script>
</head>
<body>
	<div id="page1"  class="turnpage">
		等待。。。。
	</div>
	<br/>
	<div id="page2"  class="turnpage">
		等等。。。。
	</div>
</body>

</html>

js代码:多加了一个jquery对象方法生成数据视图

//<!--匿名自执行函数,jquery做实参传入可作为局部变量
(function ($){
	//声明为jquery对象方法,便于区别实例化
	$.fn.showbar=function(cur,url,pagerow,pc,pagecount){//pagerow,每页显示多少条记录pc总页数,pagecount翻页栏页码数
 		elereturn="<ul class='pageul'>";
	 	//未找到更好的方法前先用parentNode....
	 	elereturn+=cur>1?"<li class='out'><a href='javascript:void(0)' οnclick='$(parentNode.parentNode.parentNode).changepage("+(cur-1)+",\""+url+"\","+pagerow+","+pagecount+")'>上一页</a></li>":"<li class='out'>上一页</li>";

	 	var pageh=Math.floor(pagecount/2);//向下取整  
	 	if(pc<=pagecount){
		 	for (var i = 1; i < pc+1; i++) {
		 		elereturn+=(i==cur)?"<li class='cur'>"+i+"</li>":"<li><a href='javascript:void(0)' οnclick='$(parentNode.parentNode.parentNode).changepage("+i+",\""+url+"\","+pagerow+","+pagecount+")'>"+i+"</a></li>";
		 	}	
	  }else{//利用js的&&、||执行特点减少分支语句,可读性会降低
	  	(cur<=pageh+1 && (function (){
	  		for (var j = 1; j < pagecount; j++) {
	  		 elereturn+=(j==cur)?"<li class='cur'>"+j+"</li>":"<li><a href='javascript:void(0)' οnclick='$(parentNode.parentNode.parentNode).changepage("+j+",\""+url+"\","+pagerow+","+pagecount+")'>"+j+"</a></li>";
	  		}
	  		elereturn+="<li><span>....</span></li><li><a href='javascript:void(0)' οnclick='$(parentNode.parentNode.parentNode).changepage("+pc+",\""+url+"\","+pagerow+","+pagecount+")'>"+pc+"</a></li>";
	  		return true; 	
	  	})())||(cur>= (pc-pageh) && (function (){
	  		elereturn+="<li><a href='javascript:void(0)' οnclick='$(parentNode.parentNode.parentNode).changepage(1,\""+url+"\","+pagerow+","+pagecount+")'>1</a></li><li><span>....</span></li>";
	  		for (var j = (cur-pageh); j < pc+1; j++) {
	  		 elereturn+=(j==cur)?"<li class='cur'>"+j+"</li>":"<li><a href='javascript:void(0)' οnclick='$(parentNode.parentNode.parentNode).changepage("+j+",\""+url+"\","+pagerow+","+pagecount+")'>"+j+"</a></li>";
	  		}
	  		return true; 	
	  	})())||( function (){
	  		elereturn+="<li><a href='javascript:void(0)' οnclick='$(parentNode.parentNode.parentNode).changepage(1,\""+url+"\","+pagerow+","+pagecount+")'>1</a></li><li><span>....</span></li>";
	  		for (var j = cur-pageh+1; j < cur+pageh; j++) {
	  			elereturn+=(j==cur)?"<li class='cur'>"+j+"</li>":"<li><a href='javascript:void(0)' οnclick='$(parentNode.parentNode.parentNode).changepage("+j+",\""+url+"\","+pagerow+","+pagecount+")'>"+j+"</a></li>";
	  	  }
	  	  elereturn+="<li><span>....</span></li><li><a href='javascript:void(0)' οnclick='$(parentNode.parentNode.parentNode).changepage("+pc+",\""+url+"\","+pagerow+","+pagecount+")'>"+pc+"</a></li>";
	  	  return true; 
	  	}
	  	)();
	  }
	  elereturn+=cur<pc?"<li class='out'><a href='javascript:void(0)' οnclick='$(parentNode.parentNode.parentNode).changepage("+(cur+1)+",\""+url+"\","+pagerow+","+pagecount+")'>下一页</a></li>":"<li class='out'>下一页</li></ul>";
	  return elereturn;
	}
	$.fn.changepage=function (cur,urlStr,pagerow,pagecount){//pagerow每页显示多少条记录,pagecount页码数
	 	var pc=1;
	 	if(cur<1)cur=1;
	 	if(pagerow<1)pagerow=1;
	 	if(pagecount<1)pagecount=1;
		if(urlStr){
			var mybar=$(this);//要再ajax外面定义,否则this指向的是ajax的内置对象
			$.ajax({
				url:urlStr,
				data:{curpage:cur},
				dataType:"json",
				success:function(result){
					
					pc=Math.floor((parseInt(result.rowcount)+pagerow-1)/pagerow);
					if(cur>pc)cur=pc;
					var ss=mybar.showdata(result.data);
					ss+=mybar.showbar(cur,urlStr,pagerow,pc,pagecount);
//					var ss=mybar.showbar(cur,urlStr,pagerow,pc);
					mybar.empty();
	  				mybar.append(ss);
				}
				
			});	
		}
	}
	//显示记录集的
	$.fn.showdata=function(resultdata){
		var dataView="<div class='datadiv'><ul class='dataul'>";
		
		for(var i=0;i<resultdata.length;i++){//读行
			var row=resultdata[i];
			dataView+="<li>";
			for(var j=0;j<row.length;j++){//读列
				dataView+="<span class='dspan"+j+"'>"+row[j]+"</span>";
			}
			dataView+="</li>";
		}
		
		dataView+="</ul></div>";
	  return dataView;
	}
	
	
})($);

CSS代码:调效果调了好久,最后还是这么丑,死心了。

/*整个分页容器div的样式*/
.turnpage{
	font-size:14px;
	width:70%;
	text-align:center;
	position:relative;
}

/*数据框div*/
.datadiv{
	position:relative;
}
/*装翻页条的ul*/
.pageul{
	text-align:center;
	line-height:40px;
	position:relative;
	margin:5px 0px 5px 10px;
}
/*翻页条上li的样式*/
.pageul li{
	width:30px;
	height:25px;
	border:solid 1px #aaaaaa;
	border-radius:3px;
	text-align:center;
	vertical-align:middle;
	list-style-type:none;
	display:inline;
	float:left;
	line-height:25px;
	
}	
/*鼠标移到页码上时li的样式*/
.pageul li:hover{
	width:35px;
	height:30px;
	line-height:25px;
}
/*翻页条上的a标签*/
.pageul li a{
	width:100%;
	text-decoration:none;
	color:#11cccc;

}
/*鼠标移到页码上时a标签里的文字*/
.pageul li a:hover {
	color:red;
	font-size;16px;
}
/*当前页背景与其它页码分别*/
.cur{

	background-color:#e3e3e3;
}
/*上一页/下一页按钮的样式*/
.turnpage .out{
	width:60px;

}
/*鼠标移到上一页/下一页按钮时*/
.turnpage .out:hover{
	width:65px;

}
/*装数据的li*/
.dataul li{
	width:100%;
	border:solid 1px #e3e3e3;
	border-radius:5px;
	text-align:center;
	list-style-type:none;
	display:inline;
	float:left;
	height:30px;

}
/*装数据的span格式*/
.dataul li span{
	border-radius:3px;
	text-align:left;
	display:inline-block;
	width:30%;
	line-height:29px;
	border:solid 1px #aaaaaa;
	font-size:17px;
	
}
/*鼠标移到装数据的li时*/
.dataul li:hover{

	background-color:#aaaaaa;
}
/*鼠标移到装数据的li时*/
.dataul li:hover span{

	background-color:#777777;
}

/*鼠标经过装数据的span格式*/
.dataul li span:hover{
background-color:#e3e3e3;
	
}

servlet:就改了这个伪数据
strRespXml = "{\"rowcount\":\"50\",\"data\":[[\"aa\",\"bb\",\"cc\"],[\"11\",\"22\",\"33\"],[\"44\",\"55\",\"66\"]]}";

package com.forenet.web;

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;



/**
 * Servlet implementation class TestforPage
 */
public class TestforPage extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public TestforPage() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		int cur=Integer.parseInt(request.getParameter("curpage"));
		String strRespXml = null;
		PrintWriter cliWriter = null;
		if(cur<1)cur=1;
		response.setContentType("text/html");
//		response.setHeader("pragma", "no-cache");
		request.setCharacterEncoding("utf-8");
		try {
			strRespXml = "{\"rowcount\":\"50\",\"data\":[[\"aa\",\"bb\",\"cc\"],[\"11\",\"22\",\"33\"],[\"44\",\"55\",\"66\"]]}";
			cliWriter = response.getWriter();
			cliWriter.print(strRespXml); //成功直接返回信息
			cliWriter.flush();
			cliWriter.close();
		} 
		catch (Exception e) {
			e.printStackTrace();
		}
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		this.doGet(request, response);
	}

}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
package org.wzj.common; import java.io.IOException; import java.net.URLDecoder; import java.net.URLEncoder; import javax.servlet.jsp.JspWriter; import javax.servlet.jsp.tagext.BodyContent; import javax.servlet.jsp.tagext.BodyTagSupport; public class FenyeTag extends BodyTagSupport { private static final long serialVersionUID = 1L; private String html; private String exname; private String target = ""; //链接所响应的框架窗口 private String cssClass; //样式名 private String action; //链接 private Integer pageCount; //总页数 private Integer current; //当前页码 private Integer showCount = 10; //在页面上显示多少个链接 private Integer spanWidth = 50; public static final String TEXT = "background-color:blue;color:white;"; public int doEndTag(){ BodyContent body = this.getBodyContent(); JspWriter out = body.getEnclosingWriter(); html = "<div id='fydiv'>"; int start = 1; if ( pageCount > 0 ){ if ( current > pageCount ){ current = pageCount; } if ( current < 1 ){ current = 1; } if ( exname == null || exname.equals("")){ html += "<a href='" + action + "?pageNum=1' target='" + target + "' class='" + cssClass + "' }else{ html += "a href=' target='" + target + "' class='" + cssClass + "' } html += "'>首页</a>"; if ( current > showCount - showCount/3 ){ start = start + showCount/3*(current/(showCount/3)-2); } if ( current < showCount - showCount/3 ){ start = 1; } int rcount = 1; //////////////////////////// for ( int i = 1; i <= pageCount; i ++ ){ if ( i >= start ){ //起始页码 if ( rcount <= showCount ){ //只显示showCount个链接 if ( exname == null || exname.equals("")){ html += "  <a href='" + action + "?pageNum=" + i + "' target='" + target + "' class='" + cssClass + "' }else{ html += "  a href=' target='" + target + "' class='" + cssClass + "' } if ( current == i ){ html += TEXT; } html += "'>" + i + "</a>  "; } if ( i < pageCount && rcount == showCount ){ html += "...  "; } rcount ++; } } //////////////////////////// if ( exname == null || exname.equals("")){ html += "<a href='" + action + "?pageNum=" + pageCount + "' target='" + target + "' class='" + cssClass + "' }else{ html += "a href=' target='" + target + "' class='" + cssClass + "' } html += "'>末页</a>"; html += "    第<span + current + "</span>页 共<span + pageCount + "</span>页"; } html += "</div>"; try { out.print(html); out.flush(); body.clearBody(); } catch (IOException ex) { ex.printStackTrace(); } return this.EVAL_PAGE; } public String getExname() { return exname; } public void setExname(String exname) { this.exname = exname; } public String getTarget() { return target; } public void setTarget(String target) { this.target = target; } public String getCssClass() { return cssClass; } public void setCssClass(String cssClass) { this.cssClass = cssClass; } public String getAction() { return action; } public void setAction(String action) { this.action = action; } public Integer getPageCount() { return pageCount; } public void setPageCount(Integer pageCount) { this.pageCount = pageCount; } public Integer getCurrent() { return current; } public void setCurrent(Integer current) { this.current = current; } public Integer getShowCount() { return showCount; } public void setShowCount(Integer showCount) { this.showCount = showCount; } }

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值