js解析json添加到表格并分页
js读取解析JSON数据
js读取解析JSON数据各位读友大家好!你有你的木棉,我有我的文章,为了你的木棉,应读我的文章!若为比翼双飞鸟,定是人间有情人!若读此篇优秀文,必成天上比翼鸟!js读取解析JSON数据js读取解析JSON数据JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式。
同时,JSON是JavaScript 原生格式,这意味着在JavaScript 中处理JSON数据不须要任何特殊的API 或工具包。
本文主要是对JS操作JSON的要领做下总结。
在JSON中,有两种结构:对象和数组。
1. 一个对象以“{”(左括号)开始,“}”(右括号)结束。
每个“名称”后跟一个“:”(冒号);“‘名称/值’对”之间运用“,”(逗号)分隔。
名称用引号括起来;值如果是字符串则必须用括号,数值型则不须要。
例如:var o={“xlid”:”cxh”,”xldigitid”:123456,”topscore”:2000,”topplaytime”:”2009-08-20”};2. 数组是值(value)的有序集合。
一个数组以“[”(左中括号)开始,“]”(右中括号)结束。
值之间运用“,”(逗号)分隔。
例如:var jsonranklist=[{“xlid”:”cxh”,”xldigitid”:123456,”topscore”:2000,”top playtime”:”2009-08-20”},{“xlid”:”zd”,”xldigitid”:123456,”topscore ”:1500,”topplaytime”:”2009-11-20”}];为了方便地处理JSON数据,JSON提供了json.js包,下载地址:/json.js在数据传输流程中,json是以文本,即字符串的形式传递的,而JS 操作的是JSON对象,所以,JSON对象和JSON字符串之间的相互转换是关键。
JS处理数据实现分页功能
JS处理数据实现分页功能这⼏天有⼩伙伴讨论起了分页的相关问题,这⾥我也简单讲下前端如何简单便捷的利⽤Js(库)写出优雅,好⽤的分页⼯具。
分页是个很简单⼜超多接触的技术点,粗略来讲分如下两种:真分页——每次根据页码、页⼤⼩获取数据并展⽰。
假分页——⼀次性获取所有数据,根据页码、页⼤⼩展⽰。
公认⽐较好的做法是真分页,这样可以避免很多问题(如内存占⽤过多)。
有⼀点需要注意,单纯的前端是⽆法独⽴完成数据分页的(废话),所以后端⽀持是必须的。
作为⽀持,webapi除了返回所请求的数据,还应返回数据总量以便计算页数:如上图所⽰,我们可以看出数据总量27,分页⼤⼩10(这边只请求了10条数据)。
如果你拥有如上图的webapi的⽀持,就可以接着往下写了。
我使⽤对象字⾯量封装的⽅法:var Post = {Url: function () {return "webAPI路径";},///返回带分页信息//[ele]填充信息元素ID///[ele2]填充分页元素ID//[tagName]信息元素⼀级元素名///[tag2Name]信息元素⼆级元素名//[index]页码Pager: function (ele, ele2, tagName, tag2Name, index, where) {//页⼤⼩var size = $.cookie('pageSize') == undefined ? 10 : $.cookie('pageSize');//封装的AjaxLoad(Post.Url(), {参数列表}, function (data) {<br data-filtered="filtered"> //展⽰数据$(ele).html(createHtml(data.rows, tagName, tag2Name));//设置分页信息$(ele2).attr('index', index).attr('rowcount', size).attr('total', data.total);//填充分页PagerTool(ele, ele2, Post, tagName, tag2Name, where);});}}Load、createHtml和PagerTool是我⾃⼰封装的⼏个⽅法,代码如下:///公共加载⽅法//[turl]访问地址///[postData]提交数据(标准post格式)//[callback]回调函数(可匿名)function Load(turl, postData, callback) {jQuery.support.cors = true;try {$.ajax({url: turl,timeout: 10000,type: "post",data: postData,success: function (data) {if (data != null) {Json = eval("(" + data + ")");callback(Json);}}});} catch (e) {Mbox.Show(e.message);}}///创建Html结构//[data]数据源///[tagName]⼀级元素标签名称//[tag2Name]⼆级元素标签名称function createHtml(data, tagName, tag2Name) {var Html = '';for (var i = 0; i < data.length; i++) {Html += `<${tagName}>`;$.each(data[i], function (i, v) {Html += `<${tag2Name}>${v}</${tag2Name}>`;});Html += `</${tagName}>`;}return Html;}PagerTool⽅法://公共分页⼯具条///[dataEle]数据主体//[ele]分页主体///[obj]被传⼊的类//[where]条件///[w]按照何种⽅式搜索function PagerTool(dataEle, ele, obj, tag1, tag2, where) {var total = $(ele).attr('total') - 0;var rowcount = $(ele).attr('rowcount') - 0;var index = $(ele).attr('index') - 0;var count = total % rowcount == 0 ? total / rowcount : Math.floor(total / rowcount) + 1;var Html = '';Html += '<p class="page">';Html += '<a href="javaScript:void(0)" class="prePage">上⼀页</a>';for (var i = 1; i <= count; i++) {if (index != i) {Html += `<a href="javaScript:void(0)" class="nowPage">${i}</a>`;} else {Html += `<a href="javaScript:void(0)" class="nowPage" style="background:#ACDDEA; color:#226F83; border:#93D3E4 1px solid;">${i}</a>`;}}Html += '<a href="javaScript:void(0)" class="nextPage">下⼀页</a>';Html += '</p>';$(ele).html('').html(Html);//上⼀页$(ele).find('a[class=prePage]').bind('click', function () {var index = $(this).parent().parent().attr('index') - 0;if (index > 1) {$(this).parent().parent().attr('index', index - 1);obj.Pager(dataEle, ele, tag1, tag2, index - 1, where);}});//下⼀页$(ele).find('a[class=nextPage]').bind('click', function () {var index = $(this).parent().parent().attr('index') - 0;if (index < count) {$(this).parent().parent().attr('index', index + 1);obj.Pager(dataEle, ele, tag1, tag2, index + 1, where);}});//当前页$(ele).find('a[class=nowPage]').bind('click', function () {var index = $(this).parent().parent().attr('index') - 0;$(this).parent().parent().attr('index', $(this).text());obj.Pager(dataEle, ele, tag1, tag2, $(this).text(), where);});}调⽤⽅式会是这样的:Post.Pager(testBox, pagerBox, 'ul', 'li', 1, `筛选数据的条件`);使⽤了如上代码,即可按照所返回的json数据的格式⾃动映射到容器内(按照传⼊的tagName⽣成dom):切换后效果:分页⼯具条,⽣成在页⾯是这样的:<p class="page"><br data-filtered="filtered"> <a href="javaScript:void(0)" class="prePage">上⼀页</a><br data-filtered="filtered"> <a href="javaScript:void(0)" class="nowPage" style="background:#ACDDEA; color:#226F83; border:#93D3E4 1px solid;">1<到此这篇关于JS处理数据实现分页功能的⽂章就介绍到这了。
JavaScript的JSON处理
JavaScript的JSON处理JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,常用于前后端数据传输和存储。
在JavaScript中,JSON对象提供了一组用于解析和生成JSON数据的方法,使得开发者可以轻松地处理JSON数据。
一、JSON解析在JavaScript中,可以使用JSON对象的parse()方法将JSON字符串解析成JavaScript对象。
假设有一个名为jsonData的JSON字符串,可以通过以下方式解析:```javascriptvar jsonObj = JSON.parse(jsonData);```解析后的结果将赋值给jsonObj,开发者可以通过访问jsonObj的属性来获取其中的数据。
二、JSON生成与JSON解析相反,JSON对象的stringify()方法可以将JavaScript对象转换为JSON字符串。
假设有一个名为jsonData的JavaScript对象,可以通过以下方式生成JSON字符串:```javascriptvar jsonString = JSON.stringify(jsonData);```生成的JSON字符串将赋值给jsonString,可以用于数据传输和存储。
三、JSON操作除了解析和生成JSON数据,JavaScript的JSON对象还提供了一些其他的操作方法。
1. JSON.stringify()的参数除了接受一个JavaScript对象作为参数,JSON.stringify()方法还可以接受其他两个参数,用于控制生成的JSON字符串的格式。
第二个参数用于指定一个过滤器函数,可以选择性地包含或排除特定的属性。
```javascriptvar jsonData = {name: "John",age: 25,city: "New York"};var jsonString = JSON.stringify(jsonData, ["name", "age"]);// 结果:{"name":"John","age":25}```第三个参数用于控制缩进(indentation),可以设置为一个表示缩进字符的字符串,或者一个整数,表示缩进的空格数。
JS中Json数据的处理和解析JSON数据的方法详解
JS中Json数据的处理和解析JSON数据的⽅法详解JSON(JavaScript Object Notation) 是⼀种轻量级的数据交换格式。
它基于ECMAScript的⼀个⼦集。
JSON采⽤完全独⽴于语⾔的⽂本格式,但是也使⽤了类似于C语⾔家族的习惯(包括C、C++、C#、Java、JavaScript、Perl、Python等)。
这些特性使JSON成为理想的数据交换语⾔。
易于⼈阅读和编写,同时也易于机器解析和⽣成(⼀般⽤于提升⽹络传输速率)。
举个简单的例⼦:js 代码function showJSON() {var user ={"username":"andy","age":20,"info": { "tel": "123456", "cellphone": "98765"},"address":[{"city":"beijing","postcode":"222333"},{"city":"newyork","postcode":"555666"}]}alert(ername);alert(user.age);alert(.cellphone);alert(user.address[0].city);alert(user.address[0].postcode);}这表⽰⼀个user对象,拥有username, age, info, address 等属性。
同样也可以⽤JSON来简单的修改数据,修改上⾯的例⼦js 代码function showJSON() {var user ={"username":"andy","age":20,"info": { "tel": "123456", "cellphone": "98765"},"address":[{"city":"beijing","postcode":"222333"},{"city":"newyork","postcode":"555666"}]}alert(ername);alert(user.age);alert(.cellphone);alert(user.address[0].city);alert(user.address[0].postcode);ername = "Tom";alert(ername);}js 代码function showCar() {var carr = new Car("Dodge", "Coronet R/T", 1968, "yellow");alert(carr.toJSONString());}function Car(make, model, year, color) {this.make = make;this.model = model;this.year = year;this.color = color;}可以使⽤eval来转换JSON字符到Objectjs 代码function myEval() {var str = '{ "name": "Violet", "occupation": "character" }';var obj = eval('(' + str + ')');alert(obj.toJSONString());}或者使⽤parseJSON()⽅法js 代码function myEval() {var str = '{ "name": "Violet", "occupation": "character" }';var obj = str.parseJSON();alert(obj.toJSONString());}下⾯使⽤prototype写⼀个JSON的ajax例⼦。
javascript解析json格式的数据方法详解
javascript解析json格式的数据⽅法详解JSON (JavaScript Object Notation)是⼀种简单的数据格式,⽐xml更轻巧。
它是 JavaScript 原⽣格式,这意味着在JavaScript 中处理 JSON 数据不需要任何特殊的 API 或⼯具包。
那么如何⽤JavaScript来解析json呢?⾸先,科普⼀下json。
在json中,有两种结构:对象和数组。
⼀个对象以“{”(左括号)开始,“}”(右括号)结束。
每个“名称”后跟⼀个“:”(冒号);“‘名称/值' 对”之间运⽤ “,”(逗号)分隔。
名称⽤引号括起来;值如果是字符串则必须⽤括号,数值型则不须要。
例如:var o={“key”:”value”};数组是值(value)的有序集合。
⼀个数组以“[”(左中括号)开始,“]”(右中括号)结束。
值之间运⽤ “,”(逗号)分隔。
var array = [{“name”:”tom”},{“name”:”jake”}];在数据传输流程中,json是以字符串的形式传递的,⽽JS操作的是JSON对象,所以,JSON对象和JSON字符串之间的相互转换是关键。
json字符串:var str='{“key”:”value”}';json对象:var o={“key”:”value”};1. json字符串转化为json对象可以通过JavaScript的eval()函数来进⾏解析,代码如下:<script type="text/javascript">var json = '{"key":"value","jian":"zhi"}';var obj = eval("(" + json + ")");console.log(obj); //控制台返回 Objectconsole.log(obj.key); //控制台返回 valueconsole.log(obj.jian); //控制台返回 zhi</script>或者通过JSON.parse()⽅法来解析,代码如下:var json = '{"key":"value","jian":"zhi"}';var obj =JSON.parse(json);console.log(obj); //控制台返回 Objectconsole.log(obj.key); //控制台返回 valueconsole.log(obj.jian); //控制台返回 zhi既然这两种⽅法都可以解析json字符串,那么我们究竟使⽤哪种呢?在这之前,我们先来做⼀个测试:var value = 1;var jsonstr = '{"name":"jifeng","company":"taobao","value":++value}';var json1 = eval('('+jsonstr+')');console.log(json1); //控制台返回 Objectconsole.log('value: '+ value); //控制台返回 value 2我的天,evel⽅法竟然会执⾏json字符串⾥的代码!!我们再看⼀下JSON.parse()⽅法:var value = 1;var jsonstr = '{"name":"jifeng","company":"taobao","value":++value}';var json2 = JSON.parse(jsonstr);console.log(json2);console.log('value: '+ value);//控制台报错Unexpected token + in JSON at position现在知道怎么选择了吧。
如何在JavaScript中使用 JSON 格式
如何在JavaScript中使用 JSON 格式?JSON(JavaScript Object Notation)是一种数据交换格式,它使用文本以键值对的形式表示数据。
在JavaScript中,可以使用JSON.parse()将JSON字符串解析为JavaScript对象,使用JSON.stringify()将JavaScript对象转换为JSON字符串。
使用JSON的好处是它具有简单、轻量和易于理解的特点,同时它也是一种跨平台的格式,可以让不同的系统或应用程序之间共享数据。
在JavaScript中使用JSON的步骤如下:1.创建一个简单的JSON对象```javascriptvar person = {"name": "John","age": 30,"city": "New York"};```2.将JSON对象转换为字符串```javascriptvar jsonStr = JSON.stringify(person);console.log(jsonStr);//输出:{"name":"John","age":30,"city":"New York"} ```3.将JSON字符串解析为JavaScript对象```javascriptvar jsonObj = JSON.parse(jsonStr);console.log(jsonObj);//输出:{name: "John", age: 30, city: "New York"} ```在实际应用中,经常会遇到需要将数据从JavaScript对象转换为JSON字符串,或者从JSON字符串解析为JavaScript对象的情况。
【js读取解析JSON数据】js读取数据
【js读取解析JSON数据】js读取数据JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式。
同时,JSON是JavaScript原生格式,这意味着在JavaScript中处理JSON数据不须要任何特殊的API或工具包。
在JSON中,有两种结构:对象和数组。
名称用引号括起来;值如果是字符串则必须用括号,数值型则不须要。
例如:varo={"xlid":"cxh","xldigitid":123456,"topscore":2000,"t opplaytime":"2009-08-20"};2.数组是值(value)的有序集合。
一个数组以“[”(左中括号)开始,“]”(右中括号)结束。
值之间运用“,”(逗号)分隔。
例如:varjsonranklist=[{"xlid":"cxh","xldigitid":123456,"topsc ore":2000,"topplaytime":"2009-08-20"},{"xlid":"zd","xldigitid":123456,"topscore":1500,"toppl aytime":"2009-11-20"}];为了方便地处理JSON数据,JSON提供了json.js包,下载地址:https:///json.js在数据传输流程中,json是以文本,即字符串的形式传递的,而JS操作的是JSON对象,所以,JSON对象和JSON字符串之间的相互转换是关键。
jqGrid Table 纯Json自带分页
jqGrid Table纯Json自带分页分类:JAVASCRIPT OTHER2012-12-1116:35207人阅读评论(3)收藏举报[html]view plaincopyprint?1为了减轻数据库压力和提高加载速度,生成了纯JSON文件,想在本地自动分页,找了N多API均没有详细的介绍,在一次加载属性时加入了loadonce:true属性结果发现jqGrid自带的分页功能生效了。
哎,总算解决了问题。
官方的API不知是写的不够清楚,还是本人理解有问题,花费这么多时间在这个分页上面。
解决就好,遂与大家分享为了减轻数据库压力和提高加载速度,生成了纯JSON文件,想在本地自动分页,找了N 多API均没有详细的介绍,在一次加载属性时加入了loadonce:true属性结果发现jqGrid 自带的分页功能生效了。
哎,总算解决了问题。
官方的API不知是写的不够清楚,还是本人理解有问题,花费这么多时间在这个分页上面。
解决就好,遂与大家分享[html]view plaincopyprint?2<!DOCTYPE html PUBLIC"-//W3C//DTD XHTML 1.0Transitional//EN""/TR/xhtml1/DTD/xhtml1-transitional.dtd">3<html xmlns="/1999/xhtml">4<head>567<title>本地数据测试</title>8<style type="text/css">9*{margin:0;padding:0;}10body{11font-size:12px;12}13</style>14<link href="css/ui.jqgrid.css"rel="Stylesheet"/>15<link href="css/redmond/jquery-ui-1.8.23.custom.css"rel="Stylesheet" />1617<script type="text/javascript"src="js/jquery.1.3.2.js"></script>1819<script type="text/javascript"src="js/grid.locale-cn.js"></script><!--引入这个是为了对中文的支持-->20<script type="text/javascript"src="js/jquery.jqGrid.min.js"></script> 2122<script type="text/javascript">23$(document).ready(function(){24var colN,colM;25$.ajax({26type:"POST",27url:"./report_json/report_header_20121203164057.json",28data:"json",29success:function(response){//reponse-回发数据30//alert(response);31eval("var response="+response);32colN=response.colNames;//得到colNames33colM=response.colModel;//得到colModel3435$("#list1").jqGrid({36url:"./report_json/report_content_20121203164057.json", 37datatype:"json",38mtype:'GET',39height:300,40autowidth:true,41colNames:colN,42colModel:colM,43shrinkToFit:true,44//multiselect:true,45viewrecords:true,46sortable:true,47sortname:"id",48sortorder:"desc",49pager:"#pager1",50rowNum:3,51rowList:[15,30,60,90],52//grouping:true,53loadonce:true,//关键所在54userDataOnFooter:true,55buttonicon:'ui-icon-newwin'56,caption:"IBM Report"});5758/*.navGrid('#pager1',{edit:false,add:false,del:false})59//新增下载buttion60.navButtonAdd('#pager1',{61caption:"",title:"Export Excel",62buttonicon:"ui-icon-disk",63onClickButton:function(){64window.open('getjson.jsp?flag=down','downfile','width=300,height=130,toolba r=no,resizable=no,menubar=no,status=no');65//$.post("getjson.jsp",{flag:"1"},function(data){});66},position:"last"})6768*/697071}});72});73747576//重新载入jqgrid数据77function testquery(){78jQuery("#gridTable").setGridParam({page:1}).trigger("reloadGrid"); 79}80function testclear(){81jQuery("#list1").jqGrid('clearGridData');82}83</script>84</head>8586<body>8788<div id="gridPager">89<table id="list1"></table>90<div id="pager1"></div>91</div>92</body>93</html><!DOCTYPE html PUBLIC"-//W3C//DTD XHTML 1.0Transitional//EN" "/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="/1999/xhtml"><head><title>本地数据测试</title><style type="text/css">*{margin:0;padding:0;}body{font-size:12px;}</style><link href="css/ui.jqgrid.css"rel="Stylesheet"/><link href="css/redmond/jquery-ui-1.8.23.custom.css"rel="Stylesheet"/><script type="text/javascript"src="js/jquery.1.3.2.js"></script><script type="text/javascript"src="js/grid.locale-cn.js"></script><!--引入这个是为了对中文的支持--><script type="text/javascript"src="js/jquery.jqGrid.min.js"></script><script type="text/javascript">$(document).ready(function(){var colN,colM;$.ajax({type:"POST",url:"./report_json/report_header_20121203164057.json",data:"json",success:function(response){//reponse-回发数据//alert(response);eval("var response="+response);colN=response.colNames;//得到colNamescolM=response.colModel;//得到colModel$("#list1").jqGrid({url:"./report_json/report_content_20121203164057.json",datatype:"json",mtype:'GET',height:300,autowidth:true,colNames:colN,colModel:colM,shrinkToFit:true,//multiselect:true,viewrecords:true,sortable:true,sortname:"id",sortorder:"desc",pager:"#pager1",rowNum:3,rowList:[15,30,60,90],//grouping:true,loadonce:true,//关键所在userDataOnFooter:true,buttonicon:'ui-icon-newwin',caption:"IBM Report"});/*.navGrid('#pager1',{edit:false,add:false,del:false})//新增下载buttion.navButtonAdd('#pager1',{caption:"",title:"Export Excel",buttonicon:"ui-icon-disk",onClickButton:function(){window.open('getjson.jsp?flag=down','downfile','width=300,height=130,toolbar=no,resizable=no,menubar=no,status=no');//$.post("getjson.jsp",{flag:"1"},function(data){});},position:"last"})*/}});});//重新载入jqgrid数据function testquery(){jQuery("#gridTable").setGridParam({page:1}).trigger("reloadGrid"); }function testclear(){jQuery("#list1").jqGrid('clearGridData');}</script></head><body><div id="gridPager"><table id="list1"></table><div id="pager1"></div></div></body></html>[html]view plaincopyprint?提供一个简单的Demo地址:/detail/thl331860203/4873539提供一个简单的Demo地址:/detail/thl331860203/4873539。
使用javascript实现前端分页效果的方法
一、引言随着互联网技术的发展和普及,前端开发在全球信息湾和应用程序中扮演着越来越重要的角色。
前端分页是前端开发中常见的需求之一,通过分页可以将大量数据分割成多个页面,提高数据展示效率和用户体验。
本文将介绍如何使用javascript实现前端分页效果的方法。
二、基本原理在进行前端分页操作时,需要做到以下几点:获取总数据量和每页显示的数量;根据总数据量和每页数量计算出总页数;根据当前页码和每页数量,截取相应的数据进行展示。
三、实现步骤1. 获取总数据量和每页显示的数量在实现前端分页效果时,首先需要获取总数据量和每页显示的数量。
总数据量通常来自后端接口返回的数据或者在前端进行模拟数据。
每页显示的数量由业务需求确定,可以在代码中进行指定。
2. 计算总页数根据获取到的总数据量和每页显示的数量,可以通过简单的算术运算得到总页数。
如果总数据量为100条,每页显示10条数据,则总页数为100/10=10。
3. 根据当前页码截取数据在进行分页展示时,需要根据当前页码和每页显示的数量来截取相应的数据进行展示。
可以通过数组的slice方法来实现数据的截取。
4. 分页组件的实现为了方便使用,可以将上述步骤封装成一个独立的分页组件。
该组件可以接受总数据量、每页数量等参数,同时提供页码切换、数据截取等功能。
四、代码示例下面是一个简单的javascript代码示例,用于实现前端分页效果:```javascript// 假设有一个包含100条数据的数组const data = Array.from({ length: 100 }, (v, k) => k + 1);// 每页显示10条数据const pageSize = 10;// 根据页码和每页数量进行数据截取function getPageData(pageNum) {const start = (pageNum - 1) * pageSize;const end = start + pageSize;return data.slice(start, end);}// 测试console.log(getPageData(1)); // 第1页数据console.log(getPageData(2)); // 第2页数据// ...```五、总结通过上述步骤和代码示例,我们可以实现一个简单的前端分页效果。
jquery实现数组array、集合list、json类型的分页
jquery实现数组array、集合list、json类型的分页使⽤jquery简单实现分页,功能很简单,可以⾃⼰扩展在jsp页⾯调⽤(只要数据类型是array、list、json类型都可以的): <link href="${contextPath }/css/paging.css" rel="stylesheet" type="text/css"><script language="javascript" type="text/javascript" src="${contextPath }/js/jquery.js"></script><script language="javascript" type="text/javascript" src="${contextPath }/js/paging.js"></script>初始化:<script type="text/javascript">//分页初始化//sum:记录总数//count:每页条数//total:页数//current:当前页//previous:上⼀页//next:下⼀页//first:第⼀页//last:最后⼀页//jump:跳到X页//分页初始化/每页显⽰⾏数(默认10⾏),参数只要数据集(list、array、json类型),"paging"对应div的id//var paging = new Paging("paging",data,{count:3,sum:10,total:4});var paging = new Paging("paging",data,{count:1}); //如果⼀个页⾯需要多个分页,可以再new⼀个 name不能相同,div也要多建⼀个 id也不能相同</script>HTML代码,不能去掉,id是必须的<div id="paging" class="paging"></div>附件地址:(咳,我当然是希望赚点分了)(没分的点这个吧)注:代码⾥都有注释的,就四个⽂件,主要是paging.js。
JS和JAVA使用JSON方法解析
JS和JAVA使用JSON方法解析JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式,常用于表示结构化的数据。
在JavaScript和Java中,我们可以使用不同的方法来解析JSON数据。
JavaScript中的JSON处理方法:1. JSON.stringify(:将JavaScript对象转换为JSON字符串。
例如:```javascriptvar obj = {name: "John", age: 30, city: "New York"};var jsonStr = JSON.stringify(obj);console.log(jsonStr); // 输出:{"name":"John","age":30,"city":"New York"}```2. JSON.parse(:将JSON字符串转换为JavaScript对象。
例如:```javascriptvar jsonStr = '{"name":"John","age":30,"city":"New York"}';var obj = JSON.parse(jsonStr);console.log(); // 输出:John```在JavaScript中,使用JSON.parse(方法可以方便地解析从服务器返回的JSON数据,以便在前端页面中使用。
Java中的JSON处理方法:在Java中,我们可以使用许多第三方库来处理JSON数据,例如Jackson、Gson等。
以下是使用Jackson和Gson库的示例:使用Jackson库:1. ObjectMapper类:将Java对象转换为JSON字符串,或将JSON 字符串转换为Java对象。
JS表格分页
JS表格分页<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>JS表格分页</title><script>function Page(iAbsolute,sTableId,sTBodyId,page){this.absolute = iAbsolute; //每页最⼤记录数this.tableId = sTableId;this.tBodyId = sTBodyId;this.rowCount = 0;//记录数this.pageCount = 0;//页数this.pageIndex = 0;//页索引this.__oTable__ = null;//表格引⽤this.__oTBody__ = null;//要分页内容this.__dataRows__ = 0;//记录⾏引⽤this.__oldTBody__ = null;this.__init__(); //初始化;};/**//*初始化*/Page.prototype.__init__ = function(){this.__oTable__ = document.getElementById(this.tableId);//获取table引⽤this.__oTBody__ = this.__oTable__.tBodies[this.tBodyId];//获取tBody引⽤this.__dataRows__ = this.__oTBody__.rows;this.rowCount = this.__dataRows__.length;try{this.absolute = (this.absolute <= 0) || (this.absolute>this.rowCount) ? this.rowCount : this.absolute;this.pageCount = parseInt(this.rowCount%this.absolute == 0? this.rowCount/this.absolute : this.rowCount/this.absolute+1);}catch(exception){}this.__updateTableRows__();};Page.prototype.GetBar=function(obj){var bar= document.getElementById(obj.id);bar.innerHTML= "每页"+this.absolute+"条/共"+this.rowCount+"条";// 第2页/共6页⾸页上⼀页 1 2 3 4 5 6 下⼀页末页}/**//*下⼀页*/Page.prototype.nextPage = function(){if(this.pageIndex + 1 < this.pageCount){this.pageIndex += 1;this.__updateTableRows__();}};/**//*上⼀页*/Page.prototype.prePage = function(){if(this.pageIndex >= 1){this.pageIndex -= 1;this.__updateTableRows__();}};/**//*⾸页*/Page.prototype.firstPage = function(){if(this.pageIndex != 0){this.pageIndex = 0;this.__updateTableRows__();}};/**//*尾页*/stPage = function(){if(this.pageIndex+1 != this.pageCount){this.pageIndex = this.pageCount - 1;this.__updateTableRows__();}};/**//*页定位⽅法*/Page.prototype.aimPage = function(){var abc = document.getElementById("pageno");var iPageIndex = abc.value;var iPageIndex = iPageIndex*1;if(iPageIndex > this.pageCount-1){this.pageIndex = this.pageCount -1;}else if(iPageIndex < 0){this.pageIndex = 0;}else{this.pageIndex = iPageIndex-1;}this.__updateTableRows__();};/**//*执⾏分页时,更新显⽰表格内容*/Page.prototype.__updateTableRows__ = function(){var iCurrentRowCount = this.absolute * this.pageIndex;var iMoreRow = this.absolute+iCurrentRowCount > this.rowCount ? this.absolute+iCurrentRowCount - this.rowCount : 0; var tempRows = this.__cloneRows__();var removedTBody = this.__oTable__.removeChild(this.__oTBody__);var newTBody = document.createElement("TBODY");newTBody.setAttribute("id", this.tBodyId);for(var i=iCurrentRowCount; i < this.absolute+iCurrentRowCount-iMoreRow; i++){newTBody.appendChild(tempRows[i]);}this.__oTable__.appendChild(newTBody);this.__dataRows__ = tempRows;this.__oTBody__ = newTBody;//页脚显⽰分var divFood = document.getElementById("divFood");//分页⼯具栏divFood.innerHTML="";var rightBar = document.createElement("divFood");rightBar.setAttribute("display","");rightBar.setAttribute("float","left");rightBar.innerHTML="第"+(this.pageIndex+1)+"页/共"+this.pageCount+"页";var isOK="Y";var cssColor="";divFood.appendChild(rightBar);////页脚显⽰分页结};/**//*克隆原始操作⾏集合*/Page.prototype.__cloneRows__ = function(){var tempRows = [];for(var i=0; i<this.__dataRows__.length; i++){tempRows[i] = this.__dataRows__[i].cloneNode(1);}return tempRows;};</script><script type="text/javascript" language="javascript">window.onload = function(){page = new Page(3,'senfe','group_one'); };</script><style type="text/css"><!--#senfe {border-top: #000 1px solid;border-left: #000 1px solid;}#senfe td {border-right: #000 1px solid;border-bottom: #000 1px solid;}--></style><script language="javascript">//改表格颜⾊<!--// function senfe(o,a,b,c,d){// var t=document.getElementById(o).getElementsByTagName("tr");// for(var i=0;i<t.length;i++){// t[i].style.backgroundColor=(t[i].sectionRowIndex%2==0)?a:b;// }// }--></script></head><body><div><table border="0" cellpadding="0" cellspacing="0" bordercolor="#006600" id="senfe"> <thead><tr align="center" valign="middle"><td width="46" height="23" bgcolor="#FFFFFF">编号</td><td width="71" bgcolor="#FFFFFF"><select name="select" dir="ltr"><option>套类别</option><option>A套</option><option>B套</option></select></td><td width="53" bgcolor="#FFFFFF">名称</td><td width="53" bgcolor="#FFFFFF">数量</td><td width="53" bgcolor="#FFFFFF">单价</td><td width="95" bgcolor="#FFFFFF"><select name="select" dir="ltr"><option>单位</option><option>个</option><option>双</option></select></td><td width="80" bgcolor="#FFFFFF">酒店名称</td><td width="35" bgcolor="#FFFFFF">备注</td></tr></thead><tbody id="group_one"><tr><td>1</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>2</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>3</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>4</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>5</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>6</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>7</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>8</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>9</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr></tbody></table><script language="javascript"><!--//senfe("表格名称","奇数⾏背景","偶数⾏背景","⿏标经过背景","点击后背景");senfe("senfe","#fff","#ccc","#cfc","#f00");--></script></div><div><a href="#" onclick="page.firstPage();">⾸页</a>/<a href="#" onclick="page.nextPage();">下⼀页</a>/<a href="#" onclick="page.prePage();">上⼀页</a>/<a href="#" onclick="stPage();">末页</a><span id="divFood" </span>/第<input id="pageno" value="1" style="width:20px"/>页/<a href="#" onclick="page.aimPage();">跳转</a></div></div></div></body></html>。
JS解析JSON数据及取值的用法
JS解析JSON数据及取值的一些用法<%@ page contentType="text/html;charset=GBK" language="java" %><html><head><meta http-equiv="Content-Type" content="text/html; charset=gbk" /><title>JS解析JSON数据</title></head><body style="margin:50px"><center><h1><b>JS解析JSON数据测试界面</b></h1></center><script language="javascript">//将JSON字符串转换为JSON对象的一些方法//将JSON字符串转换为JSON对象的一些用法(function (){var str = {"name":"张三","age":20};//JSON对象alert();alert(str.age);//直接取JSON对象的值//将JSON字符串转换为JSON对象var str = "{\"name\":\"张三\",\"age\":\"21\"}";//JSON字符串转义不用系统/和dos一致用\var obj = eval('(' + str + ')');//使用eval函数将JSON字符串转换为JSON对象alert();alert(obj.age);var str = '{"name":"张三","age":22}';//JSON字符串var obj = (new Function("return " + str))(); //使用new Function()形式将JSON 字符串转换为JSON对象alert();alert(obj.age);//将JSON对象转换为JSON字符串//var straa = {"name":"李四","age":"20"};//JSON对象//var newJSONtext = straa.toJSONString();//貌似没有原生方法//alert("JSON对象转换为JSON字符串: "+newJSONtext);})();//(function (){})();自动执行匿名函数</script><script>//取值的一些用法//取值的一些用法function showJSON() {//效果一var user ={"username":"andy","age":20,"info": { "tel": "123456", "cellphone": "98765"},"address":[{"city":"beijing","postcode":"222333"},{"city":"newyork","postcode":"555666"}]}alert(ername);alert(user.age);alert(.cellphone);alert(user.address[0].city);alert(user.address[0].postcode);ername = "Tom";alert(ername);//效果二var people ={ "programmers": [{ "firstName": "Brett", "lastName":"McLaughlin", "email": "brett@" },{ "firstName": "Jason", "lastName":"Hunter", "email": "jason@" }, { "firstName": "Elliotte", "lastName":"Harold", "email": "elharo@" } ],"authors": [{ "firstName": "Isaac", "lastName": "Asimov", "genre": "science fiction" }, { "firstName": "Tad", "lastName": "Williams", "genre": "fantasy" },{ "firstName": "Frank", "lastName": "Peretti", "genre": "christian fiction" } ],"musicians": [{ "firstName": "Eric", "lastName": "Clapton", "instrument": "guitar" },{ "firstName": "Sergei", "lastName": "Rachmaninoff", "instrument": "piano" } ]}alert(people.programmers[0].firstName+" "+people.programmers[0].email); alert(people.programmers[2].firstName+" "+people.programmers[2].email);alert(people.authors[0].firstName+" "+people.authors[0].genre);alert(people.musicians[1].firstName+" "+people.musicians[1].instrument);}showJSON();</script></body></html><script type="text/javascript">function mm(){var str = "";for (mm in window.event.srcElement)str += mm+"="+ window.event.srcElement[mm] +"\n"; //得到 srcElement 的所有属性alert(str);}</script>。
js解析json添加到表格并分页
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd"><html><head><base href="<%=basePath%>"><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"><meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><title>分页</title><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><script type="text/javascript">vartableData = [ {"C0" : "临夏州_康乐县","C1" : 190893.39,"C2" : 24544.65,"AREA_ID" : "930013005"}, {"C0" : "临夏州_永靖县","C1" : 368900.35,"C2" : 40592.19,"AREA_ID" : "930013006"}, {"C0" : "兰州市_东岗分局","C1" : 88.48,"C2" : 126.4,"AREA_ID" : "930013106"}, {"C0" : "临夏州_临夏县","C1" : 107337.9,"C2" : 20612.1,"AREA_ID" : "930013008"}, {"C0" : "临夏州_广河县","C1" : 69738.07,"C2" : 34894.44,"AREA_ID" : "930013003"}, {"C0" : "临夏州_和政县","C1" : 46622.96,"C2" : 20954.97,"AREA_ID" : "930013002"}, {"C0" : "临夏州_东乡县","C1" : 96021.84,"C2" : 16725.63,"AREA_ID" : "930013004"}, {"C0" : "临夏州_临夏市中心","C1" : 1845311.12,"C2" : 129478.93,"AREA_ID" : "930013001"}, {"C0" : "天水市_秦州区","C1" : 0,"C2" : 0,"AREA_ID" : "930013801"}, {"C0" : "临夏州_积石山","C1" : 256181.79,"C2" : 15185.98,"AREA_ID" : "930013007"}, {"C0" : "酒泉_肃州区","C1" : 264312,"C2" : 402.6,"AREA_ID" : "930013701"} ];var columns = [ {"cid" : "C0","ctext" : "区县"}, {"cid" : "C1","ctext" : "客户总收入"}, {"cid" : "C2","ctext" : "当月出账费用"} ];/**page:页码pageSize:每页的记录条数此方法除了传入page和pageSize之外,还应知道的有三个参数:一、表的全部数据,json串格式,可通过action查询数据库得到。
后台实现JSON分页显示
Action:/*** 团单明细--团体投保信息*/public String teamInsure() {//String grpcode = getRequestParameter("grpcode"); // 团体代码String grpcode = "CHS000G01944";("grpcode:"+grpcode+"团体投保信息---");List<TeamInsureDTO> teamInsureList = new ArrayList<TeamInsureDTO>();Pager pager = getPager("classDetailInfo/classDetailInfo_teamInsure.do?page=");pager.setPagesize(3);PageText pageText = null;try {teamInsureList = classDetailInfoServices.getTeamInsure(grpcode);pageText = classDetailInfoServices.getPageText(teamInsureList, pager, teamInsureList.size());JSONArray jsonArray = new JSONArray();JSONObject jsonObject = new JSONObject();for (int i = 0; i < teamInsureList.size(); i++) {jsonObject.element("gappno", (teamInsureList.get(i)).getGappno());jsonObject.element("gpolicyno", (teamInsureList.get(i)).getGpolicyno());jsonObject.element("classcode", (teamInsureList.get(i)).getClasscode());jsonObject.element("size", (teamInsureList.size()));jsonObject.element("pagecount", ((teamInsureList.size() + 2) / 3));String classcode = (teamInsureList.get(i)).getClasscode();if (!FunctionUtils.isBlank(classcode)) {String classname = classDetailInfoServices.getClassname(classcode); // 险种名称jsonObject.element("classname", classname);}else {jsonObject.element("classname", "");}jsonObject.element("polist", (teamInsureList.get(i)).getPolist());jsonObject.element("stat", (teamInsureList.get(i)).getStat());jsonObject.element("sumamt", (teamInsureList.get(i)).getSumamt());jsonObject.element("illamt", (teamInsureList.get(i)).getIllamt());jsonObject.element("accamt", (teamInsureList.get(i)).getAccamt());jsonObject.element("sickamt", (teamInsureList.get(i)).getSickamt());jsonObject.element("medamt", (teamInsureList.get(i)).getMedamt());jsonObject.element("tmount", (teamInsureList.get(i)).getTmount());jsonObject.element("sappdate", (teamInsureList.get(i)).getSappdate());jsonObject.element("allnum", (teamInsureList.get(i)).getAllnum());jsonObject.element("size", (teamInsureList.size()));jsonObject.element("pagecount", ((teamInsureList.size() + 2) / 3));jsonArray.add(jsonObject);}response.setContentType("text/html");response.setCharacterEncoding("GB2312");PrintWriter out = response.getWriter();String json = jsonArray.toString();(json);out.write(json);out.flush();out.close();} catch (Exception e) {setRequestAttribute("msgInfo", "获取团体投保信息失败,请稍后再试");setRequestAttribute("techInfo", "调用交易1216015返回失败");e.printStackTrace();(e);return "error";}return null;}############################################################################### ####################分页实现方法:package com.cpic.hbtx.util;import java.util.ArrayList;import java.util.List;import com.cpic.hbhp.util.Pager;public class PageText {private int nowpage = 1; // 当前页数private int pagesize; // 每页显示行数private int startrow; // 开始分页行数private int allnum; // 总记录数private int pagecount; // 总页数private String path; // 链接路径private String pageText; // 页面显示private List objlist = new ArrayList(); // 分页对象public List getObjlist() {return objlist;}public void setObjlist(List objlist) {this.objlist = objlist;}public PageText(List list, Pager pager, int allnum) throws Exception { // 路径this.path = pager.getPath();// 总记录数this.allnum = allnum;// 每页显示行数this.pagesize = pager.getPagesize();// 当前页数this.nowpage = pager.getPage();// 总页数this.pagecount = (this.allnum + this.pagesize - 1) / this.pagesize;// 开始分页行数this.startrow = this.nowpage * this.pagesize;objlist = getList(list, startrow, pagesize, pagecount, nowpage);getPageText();}/*** 分页对象*/@SuppressWarnings("unchecked")public List getList(List list, int startrow, int pagesize,int pagecount,int nowpage) { if (pagecount <= nowpage) {for (int i = (startrow - pagesize);i < list.size();i ++) {this.objlist.add(list.get(i));}} else {for (int i = (startrow - pagesize);i < startrow;i ++) {this.objlist.add(list.get(i));}}return this.objlist;}/*** 页面显示信息*/public String getPageText() {try {if (this.allnum != 0) {this.pageText = "共【<font color=\"red\">" + this.allnum+ "</font>】条记录 每页显示<font color=\"red\">"+ this.pagesize+ "</font>条记录 共【<font color=\"red\">"+ this.pagecount+ "</font>】页 当前第<font color=\"red\">"+ this.nowpage + "</font>页";if (this.nowpage <= 1) {} else {this.pageText += "<a style=\"color:#157DF0\" href=\""+ this.path + 1+ "\" title='首页'>[首页]</a> ";this.pageText += "<a style=\"color:#157DF0\" href=\""+ this.path + (this.nowpage - 1)+ "\" title='上一页'>[上一页]</a> ";}if (this.nowpage >= this.pagecount) {} else {this.pageText += "<a style=\"color:#157DF0\" href=\""+ this.path + (this.nowpage + 1)+ "\" title='下一页'>[下一页]</a> ";this.pageText += "<a style=\"color:#157DF0\" href=\""+ this.path + (this.pagecount)+ "\" title='尾页'>[尾页]</a> ";}this.pageText += "跳到第";this.pageText += "<script text='text/javascript'>function inPage(){ var reg = /^\\d+$/;"+ " var pageno=document.getElementById('pageno').value; "+ " if(!reg.test(pageno) || parseInt(pageno)<=0){"+ " alert('请输入有效页数'); return false;"+ "}else if(pageno>"+ this.pagecount+ "){alert('输入的页数超过了总页数,请重新输入');return false; }else{window.location.href='"+ this.path+ "'+pageno;return true;"+ "}} </script>";this.pageText += "<input name='pageno' id='pageno' type='text' value='' size='5' />";this.pageText += "页<input type='button' value='跳转' class='btn' onclick=\"javascript:inPage();\"/>";this.pageText += "<input type='text' style='display: none;'/>";} elsethis.pageText = "<font color=red><strong> 未查询到数据!!! </strong></font>";} catch (Exception e) {e.printStackTrace();}return this.pageText;}}############################################################################### ###JSP:<%@ page language="java" pageEncoding="UTF-8"%><%@ include file="/view/common/tags.jsp"%><%String path = request.getContextPath();String basePath = request.getScheme() + "://"+ request.getServerName() + ":" + request.getServerPort()+ path + "/";%><html><head><base href="<%=basePath%>"><link href="include/css/css.css" rel="stylesheet" type="text/css" /><link href="include/css/style.css" rel="stylesheet" type="text/css" /><link rel="stylesheet" href="include/css/type.css" type="text/css"><link rel="stylesheet" href="include/css/tab.css" type="text/css"><SCRIPT src="include/jquery/jquery-1.5.1-min.js"></SCRIPT><SCRIPT src="include/js/public.js"></SCRIPT><SCRIPT src="include/js/tabmanager.js"></SCRIPT><script language="JavaScript" type="text/JavaScript">function inPage(){var reg = /^\d+$/;var pageno=parseInt(document.getElementById("pageno2").value);var pagecount2 = parseInt($("#pagecount2").text());if(!reg.test(pageno) || parseInt(pageno)<=0){alert('请输入有效页数');return false;}else if(pageno > pagecount2){alert('输入的页数超过了总页数,请重新输入');return false;}else{demand1(pageno);return true;}}function initview(){showIframe();//初始化页面处理方法//tab页var tabID = new Array("team","person");var tableIDs= new Array("teamTable","personTable");setTabId(tabID,tableIDs);}function selectTab(num){showSelectedTab(num);if(num == null){alert("tab页出错");return;}}function showIframe() { // 初始化时隐藏数据展示页document.getElementById("notnull").style.display = "none";document.getElementById("notnull1").style.display = "none";document.getElementById("notnull2").style.display = "none";}//验证只能输入数字或小数,objName:错误提示中对象的名称function checkValues(obj, objName){var jgpattern =/^\d*(\.[0-9]+)?$/;var value = obj.value;if (value.length >0 && value.charAt(0) == '0' && value.charAt(1) == '0') {alert(objName+"只能是15位以内的数字或小数点,请重新输入!");obj.focus();obj.value="";return false;}if((value.length >0 && value.length <= 15 && !jgpattern.test(value)) || (value.length >15)){alert(objName+"只能是15位以内的数字或小数点,请重新输入!");obj.focus();obj.value="";return false;}return true;}function demand() { // 人员清单显示数据展示页var sfzh = document.getElementById("sfzh");var bc = document.getElementById("bc");var lj = document.getElementById("lj");if (!checkValues(bc,"本次转核保额超过")) {bc.focus();return false;}if (!checkValues(lj,"累计保额超过")) {lj.focus();return false;}if (IsEmptyValue(sfzh.value)){alert("请填写身份证号");sfzh.focus();return false;}if (!isIdCardNo(sfzh.value)){sfzh.focus();return false;var igappno = document.getElementById("igappno").value;var iclasscode = document.getElementById("iclasscode").value;var igrpcode = document.getElementById("igrpcode").value;var ifsumpre = bc.value;var isumpre = lj.value;var ipid = sfzh.value;$.getJSON("${pageContext.request.contextPath}/classDetailInfo/classDetailInfo_teamDetail. do?d="+Math.random(),{gappno:igappno,classcode:iclasscode,grpcode:igrpcode,fsumpre:ifsump re,sumpre:isumpre,pid:ipid},callback);function callback(data) {var tr = "";for(var j = 0;j < data.length;j ++){var appno = data[j].appno;var classcode = data[j].classcode ;var fpid = data[j].fpid;var name = data[j].name;var piece = data[j].piece;var prsumpre = data[j].prsumpre;var nprsumpre = data[j].nprsumpre;var isblack = data[j].isblack;var isclaim = data[j].isclaim;var begdate = data[j].begdate;var enddate = data[j].enddate;tr = tr+ '<tr><td>'+'<input type="radio" name="detail" onclick="sendIdentity("'+begdate+'|'+fpid+'")"/>'+appno+'</td><td>'+classcode+'</td><td>'+fpid+'</td><td>'+name+'</td><td>'+piece+'</td><td>'+prsumpre+'</td><td>'+nprsumpre+'</td><td>'+isblack+'</td><td>'+isclaim+'</td><td>'+begdate+'</td><td>'+enddate+'</td></tr>';}$("#test").html(tr);$("#size1").html(data[0].size);$("#pagecount1").html(data[0].pagecount);}document.getElementById("null").style.display = "none";document.getElementById("notnull").style.display = "block";}function sendIdentity(str) {var strr = str.split("|")var begdate = strr[0];var fpid = strr[1];$("#fpid").text(fpid);$("#begdate").text(begdate);}function demand1(pageno) {var igrpcode = document.getElementById("igrpcode").value;var startrow = pageno * 3;$.getJSON("${pageContext.request.contextPath}/classDetailInfo/classDetailInfo_teamInsure. do?d="+Math.random(),{grpcode:igrpcode},callback);function callback(data) {var tr = "";if(data[0].size <= pageno) {for(var j = (startrow - 3);j < data.length;j ++){var gappno = data[j].gappno;var gpolicyno = data[j].gpolicyno;var classcode = data[j].classcode;var classname = data[j].classname;var polist = data[j].polist;var stat = data[j].stat;var illamt = data[j].illamt;var accamt = data[j].accamt;var sickamt = data[j].sickamt;var medamt = data[j].medamt;var tmount = data[j].tmount;var sappdate = data[j].sappdate;var allnum = data[j].allnum;tr = tr+ '<tr><td>'+gappno+'</td><td>'+gpolicyno+'</td><td>'+classcode+'</td><td>'+classname+'</td><td>'+polist+'</td><td>'+stat+'</td><td>'+illamt+'</td><td>'+accamt+'</td><td>'+sickamt+'</td><td>'+medamt+'</td><td>'+tmount+'</td><td>'+sappdate+'</td><td>'+allnum+'</td></tr>';}} else {for(var j = (startrow - 3);j < startrow;j ++){var gappno = data[j].gappno;var gpolicyno = data[j].gpolicyno;var classcode = data[j].classcode;var classname = data[j].classname;var polist = data[j].polist;var stat = data[j].stat;var illamt = data[j].illamt;var accamt = data[j].accamt;var sickamt = data[j].sickamt;var medamt = data[j].medamt;var tmount = data[j].tmount;var sappdate = data[j].sappdate;var allnum = data[j].allnum;tr = tr+ '<tr><td>'+gappno+'</td><td>'+gpolicyno+'</td><td>'+classcode+'</td><td>'+classname+'</td><td>'+polist+'</td><td>'+stat+'</td><td>'+illamt+'</td><td>'+accamt+'</td><td>'+sickamt+'</td><td>'+medamt+'</td><td>'+tmount+'</td><td>'+sappdate+'</td><td>'+allnum+'</td></tr>';}}$("#test1").html(tr);$("#size2").html(data[0].size);$("#currpage2").html(pageno);$("#pagecount2").html(data[0].pagecount);}document.getElementById("null1").style.display = "none";document.getElementById("notnull1").style.display = "block";}function demand2() {var igappno = document.getElementById("igappno").value;var ipid = $("#fpid").text();var ibegdate = $("#begdate").text();if (IsEmptyValue(ipid)) {alert("查询前请选定一项团单明细记录");return false;}$.getJSON("${pageContext.request.contextPath}/classDetailInfo/classDetailInfo_insuranced History.do?d="+Math.random(),{gappno:igappno,pid:ipid,begdate:ibegdate},callback);function callback(data) {var tr = "";for(var j = 0;j < data.length;j ++){var sappno = data[j].sappno;var spolicyno = data[j].spolicyno;var sclasscode = data[j].sclasscode ;var sclassname = data[j].sclassname ;var spolist = data[j].spolist;var fillpre = data[j].fillpre;var fsuddenpre = data[j].fsuddenpre;var fgravepre = data[j].fgravepre;var fmedicalpre = data[j].fmedicalpre;var spayname = data[j].spayname;var ftmount = data[j].ftmount;var ftsumfee = data[j].ftsumfee;var fpieces = data[j].fpieces;var fdcdm = data[j].fdcdm;var sappdate = data[j].sappdate;var iyearnum = data[j].iyearnum;tr = tr+ '<tr><td>'+sappno+'</td><td>'+spolicyno+'</td><td>'+sclasscode+'</td><td>'+sclassname+'</td><td>'+spolist+'</td><td>'+fillpre+'</td><td>'+fsuddenpre+'</td><td>'+fgravepre+'</td><td>'+fmedicalpre+'</td><td>'+spayname+'</td><td>'+ftmount+'</td><td>'+ftsumfee+'</td><td>'+fpieces+'</td><td>'+fdcdm+'</td><td>'+sappdate+'</td><td>'+iyearnum+'</td></tr>';}$("#test2").html(tr);}document.getElementById("null2").style.display = "none";document.getElementById("notnull2").style.display = "block";}</script><style>table{font-size: 13px;}.tdr{text-align: right}.tdl{text-align: center}th{font-weight: 100;font-size: 12px;}font{font-size: 12px;}</style></head><body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" onload="initview()"> <span style="display: none;"><input type="text" id="igappno" value="<%=request.getParameter("gappno") %>"/></span><span style="display: none;"><input type="text" id="iclasscode" value="<%=request.getParameter("classcode") %>"/></span><span style="display: none;"><input type="text" id="igrpcode" value="<%=request.getParameter("grpcode") %>"/></span><table width="99%" cellspacing="0" cellpadding="0" class="titletable" style="margin-top: 10px;margin-left: 6px;"><tr><td>团单明细查询</td></tr></table><center><table width="99%" style="margin-top: 5px;"><tr><td><fieldset style="margin-left: 13px;"><legend><font>人员清单---(红色代表个人累计保额超限)</font></legend><table width="98%" cellpadding="0" cellspacing="0" style="margin-left: 8px;"><!-- 循环列表--><tr><td>本次转核保额超过(元):<input type="text" name="bc" id="bc" size="10""></td><td class="tdr">累计保额超过(元):<input type="text" name="lj" id="lj" size="10"></td><td colspan="2" class="tdr">身份证号:<input type="text" name="sfzh" id="sfzh" size="20%"></td><td class="tdr"><input type="button" value="团单明细查询" style="cursor: hand;" onclick="demand();"></td></tr></table><table width="98%" style="margin-left: 8px;margin-top: 2px;margin-bottom: 2px;" cellpadding="0" cellspacing="0"><tr><td colspan="11"><table id="null" class="listtable" width="100%" border="1" bordercolor="gray" cellpadding="0" cellspacing="0"><tr><th>投保单号</th><th>险种代码</th><th>身份证</th><th>姓名</th><th>份数</th><th>个人累计保额</th><th>本次转核累计保额</th><th>是否黑灰名单</th><th>是否有理赔</th><th>责任起始日期</th><th>责任终止日期</th></tr><tr id="odd"><td class="tdl"> </td><td class="tdl"> </td><td class="tdl"> </td><td class="tdl"> </td><td class="tdl"> </td><td class="tdl"> </td><td class="tdl"> </td><td class="tdl"> </td><td class="tdl"> </td><td class="tdl"> </td><td class="tdl"> </td></tr><tr id="even"><td class="tdl"> </td><td class="tdl"> </td><td class="tdl"> </td><td class="tdl"> </td><td class="tdl"> </td><td class="tdl"> </td><td class="tdl"> </td><td class="tdl"> </td><td class="tdl"> </td><td class="tdl"> </td><td class="tdl"> </td></tr><tr id="odd"><td class="tdl"> </td><td class="tdl"> </td><td class="tdl"> </td><td class="tdl"> </td><td class="tdl"> </td><td class="tdl"> </td><td class="tdl"> </td><td class="tdl"> </td><td class="tdl"> </td><td class="tdl"> </td><td class="tdl"> </td></tr><tr><td colspan="11" align="center">共【<font color="red">0</font>】条记录 每页显示<font color="red">3</font>条记录 共【<font color="red">1</font>】页 当前第<font color="red">1</font>页 跳到第<input name='pageno' id='pageno' type='text' value='' size='5' />页<input type='button' value='跳转' style="cursor: hand;" class='btn' onClick="javascript:inPage();"/></td></tr></table><table id="notnull" class="listtable" width="100%"border="1" bordercolor="gray" cellpadding="0" cellspacing="0"><tr><td colspan="11" align="right" style="background:#eef6ff;text-align: right">被保人数:<font color="red">2</font> 每页最多个单数为:<font color="red">58</font> 当前总页数:<font color="red">1</font> 当前个单数:<font color="red">2</font> </td></tr><tr><th>投保单号</th><th>险种代码</th><th>身份证</th><th>姓名</th><th>份数</th><th>个人累计保额</th><th>本次转核累计保额</th><th>是否黑灰名单</th><th>是否有理赔</th><th>责任起始日期</th><th>责任终止日期</th></tr><tbody id="test"></tbody><tr><td colspan="11" align="center">共【<font color="red" id="size1"></font>】条记录 每页显示<font color="red">3</font>条记录 共【<font color="red" id="pagecount1"></font>】页 当前第<font color="red">1</font>页 跳到第<input name='pageno' id='pageno' type='text' value='' size='5' />页<input type='button' value='跳转' style="cursor: hand;" class='btn' onClick="javascript:inPage();"/></td></tr></table></td></tr></table><table width="98%" cellpadding="0" cellspacing="0" style="margin-left: 8px;"><tr><td class="tdr"><img src="include/images/Return_CHN.gif"onclick="javascript:history.back(-1);" style="cursor:hand"/></td></tr></table></fieldset></td></tr><tr><td><div id="tabs0"><center><table width="100%"><tr><td><table id="tab" style="LINE-HEIGHT: normal; FONT-STYLE: normal; FONT-VARIANT: normal; margin-top: 10px;color: blue;" cellSpacing="0" cellPadding="0" width="20%"><tr><td class="tabFocus" id="team" onclick="selectTab('0')" width="100" height="10"><font>团体投保信息</font></td><td class="tabNormal" id="person" onclick="selectTab('1')" width="100" height="10"><font>个人投保信息</font></td></tr></table></td></tr><tr><td><!--团体投保信息table--><div id="teamTable"><fieldset><legend><font>团体投保信息</font></legend><table width="98%" border="0" cellpadding="0" cellspacing="0"><tr><td colspan="13"><table id="null1" class="listtable" width="100%" border="1" bordercolor="gray" cellpadding="0" cellspacing="0"><tr><th>投保单号</th><th>保单号</th><th>险种代码</th><th>险种名称</th><th>主附险</th><th>保单状态</th><th>疾病死亡保额</th><th>意外死亡保额</th><th>重大疾病保额</th><th>医疗费用保额</th><th>总保费</th><th>投保日期</th><th>总人数</th></tr><tr id="odd"><tdclass="tdl"> </td><tdclass="tdl"> </td><tdclass="tdl"> </td><tdclass="tdl"> </td><tdclass="tdl"> </td><tdclass="tdl"> </td><tdclass="tdl"> </td><tdclass="tdl"> </td><tdclass="tdl"> </td><tdclass="tdl"> </td><tdclass="tdl"> </td><tdclass="tdl"> </td><tdclass="tdl"> </td></tr><tr id="even"><td。
vue+vuex+json-seiver实现数据展示+分页功能
vue+vuex+json-seiver实现数据展⽰+分页功能⼀⼂项⽬分析1.UI:2.接⼝信息:⼆⼂项⽬环境Mockjs:⽣成模拟数据(含中⽂名,以及地址)json-server:模拟后端接⼝webpack-dev-server:开启服务器环境+接⼝代理jquery:使⽤jquery的ajax拉取数据vue+vuex:vuex负责数据交互,vue渲染页⾯iviewui:ui组件,⽅便布局搭建开发环境1.基本环境安装: npm install --save Mockjs使⽤:详细API:mock.jsvar Mock = require('mockjs')var fs =require('fs')var Random = Mock.Random//保存数据var arr=[]//动态⽣成4W条数据for(let i=1;i<40000;i++){//⽣成随机项let name=ame();let age=Mock.mock({"age|1-100": 100 }).agelet home=Random.province();let sex=Random.pick(["男","⼥"]);let education=Random.pick(["初中","⾼中","专科","本科"]);arr.push({"id":i,name,age,home,sex,education})}//写⼊⽂件fs.writeFile("db.json", JSON.stringify( {"student": arr}),function(){console.log("done")})node mock.js 即可⽣成db.json模拟数据⽂件安装: npm install -g json-server使⽤:在有db.json(模拟数据的⽂件夹)下 json-server --watch db.json , 即可在127.0.0.1:3000下看到模拟数据.4.接⼝代理原因:由于我们的页⾯在8080端⼝运⾏,不能跨域访问3000端⼝的数据信息.所以需要使⽤webpack-dev-server进⾏跨域代理. webpack-config.js⽂件下添加如下代码:devServer: {proxy: {'/api': {target: 'http://localhost:3000',pathRewrite: {'^/api' : ''}}}}启动webpack-dev-server npm run dev ,即可在8080端⼝的api虚拟路径下(127.0.0.1:8080/api/student)看到3000端⼝的40000条数据了.5.引⼊jquery在index.html中引⼊jquery6.Vuex安装,配置⽬的:vuex(状态管理器),⽤于存储管理组件的状态(与UI交互),并与后端进⾏数据交互安装: npm install --save vuex配置:创建store仓库⽂件夹,并创建index.js主⽂件和info.js存储信息的⽂件index.js⽂件负责暴露所有store库⽂件(例如:info.js)info.js⽂件负责拉取后端数据,以及记录UI组件信息.//info.jsexport default{//命名空间namespaced:true,//状态管理state:{arr:[]},//⽆副作⽤⽅法,唯⼀⽤于改变state的地⽅mutations:{changeArr(state,{arr}){state.arr=arr;}},//副作⽤⽅法,⽤于进⾏逻辑判断,以及拉取数据actions:{loadInfo({commit}){$.get("/api/student?_limit=10",function(data,statu,xhr){commit("changeArr",{arr:data})})}}}//index.jsimport info from "./info"export default{modules:{info}}在main.js⼊⼝⽂件下引⼊并使⽤vuex//main.js原有基础上中加⼊如下代码import Vuex from "vuex";import store from "./store/index";e(Vuex)new Vue({el:"#app",render(h){return h(App)},//将store注册到prototype上store: new Vuex.Store(store)})现在vuex就基本配好了.我们可以在Vue组件上看⼀下vuex是否配置成功.//app.vue组件<template><div>//获取Vuex中的数据{{$.arr}}</div></template><script>export default {//组件创建时调⽤loadInfo⽅法拉取数据created(){this.$store.dispatch("info/loadInfo")}}</script>现在就可以打开127.0.0.1:8080页⾯查看vuex是否完成了7.iviewui⽬的:iview可以有效减少我们花在布局上的精⼒.安装: npm install --save iview配置:在index.html中引⼊node_modules\iview\dist\styles\iview.css样式表<link rel="stylesheet" href="./node_modules/iview/dist/styles/iview.css" rel="external nofollow" >在⼊⼝⽂件main.js中引⽤iview组件,并使⽤import iview from "iview"; e(iview)现在就可以了以上就是项⽬的所有配置以上所述是⼩编给⼤家介绍的vue+vuex+json-seiver实现数据展⽰+分页功能,希望对⼤家有所帮助,如果⼤家有任何疑问请给我留⾔,⼩编会及时回复⼤家的。
js中JSON的使用全解
js中JSON的使⽤全解使⽤JSON进⾏数据传输⼀、选择的意义在异步应⽤程序中发送和接收信息时,可以选择以纯⽂本和 XML 作为数据格式。
为了更好的使⽤ajax,我们将学习⼀种有⽤的数据格式JavaScript Object Notation(JSON),以及如何使⽤它更轻松地在应⽤程序中移动数据和对象。
JSON是⼀种简单的数据交换格式,在某些⽅⾯,它的作⽤与XML⾮常类似,但⽐XML更为简单,JSON的语法简化了数据交换的难度,⽽且提供了⼀种伪对象的⽅式。
Java的对象 < - >JavaScript对象(json数据格式)⼆、JSON 基础简单地说,JSON 可以将 JavaScript 对象中表⽰的⼀组数据转换为字符串(伪对象),然后就可以在函数之间轻松地传递这个字符串,或者在异步应⽤程序中将字符串从 Web 客户端传递给服务器端程序。
这个字符串看起来有点⼉古怪(稍后会看到⼏个⽰例),但是JavaScript 很容易解释它,⽽且 JSON 可以表⽰⽐名称/值对更复杂的结构。
例如,可以表⽰数组和复杂的对象,⽽不仅仅是键和值的简单列表。
关于JSON对象1、使⽤JavaScript语法创建对象//定义⼀个函数,作为构造函数fucntion person(name,sex){=name;this.sex=sex;}//创建⼀个实例var p=new Person(‘张三’,’男’);//输出Person实例alert();注意:通过该⽅式创建的对象是⼀般的脚本对象2、从JavaScript1.2开始创建对象有了⼀种更快捷的语法(Json的语法),如下:var obj={name:"张三","sex":'男'};alert(obj.sex);关于数组1、早期的JavaScript数组var arr=new Array();arr[0]=’a’;arr[1]=’bbc’我们也可以通过如下⽅式创建数组var arr=new Array(‘a’,’bbc’);2、使⽤JSON语法,则可以通过如下⽅式创建数组var arr=[‘a’,’bbc’];简单 JSON ⽰例按照最简单的形式,可以⽤下⾯这样的 JSON 表⽰名称/值对:{ "firstName":"Brett" }{ "firstName":"Brett" }这个⽰例⾮常基本,⽽且实际上⽐等效的纯⽂本名称/值对占⽤更多的空间:firstName=Brett但是,当将多个名称/值对串在⼀起时,JSON 就会体现出它的价值了。
layui框架之table表格操作数据实现分页
layui框架之table表格操作数据实现分页Layui是⼀款免费,开源,轻量级的前端cms框架,适⽤于企业后端,能快速上⼿开发,集成了常⽤的组件,还有完善的⽂档和社区。
之前写⼀个⼀个关于数据的table表格显⽰并带有分页功能,实现过程遇到了很多问题,现抽空总结⼀下。
⾸先下载最新版的layui⽂件:下载完之后引⼊到⾃⼰的项⽬中,放在根⽬录的下⾯某⼀个地⽅:然后在你要⽤的jsp页⾯上引⼊相应的js和css:此时路径应为你放⾄layui⽂件包的路径,注意路径不要引⼊错误!简单的⼀个demo页⾯:页⾯显⽰为:在此讲⼀下传⼊的数据格式:{"code":0,"msg":"","count":29,"data":[{"id":10000,"username":"user-0",...........我⾃⼰定义⽅式为:⾸先创建⼀个返回类型实体类:ResultUtil:写相应的get,set⽅法,然后按照layui定义的返回类型格式写这个⽅法的实现类:其中object就是你要在表格中显⽰的数据,count为数据的条数,然后写相应的⽅法,sql语句这些都很简单,在此不多说,写完之后在控制层⽅法中也就是前台页⾯url这个路径的⽅法中调⽤此⽅法,注意⽅法的接⼝http请求类型,默认:get:然后在前台页⾯中使⽤:红圈圈中的这个⽅法在页⾯控制台可以看到你传⼊的数据。
你传⼊的data数据⼀定要和你页⾯上写的数据⼀致。
这个是简单的layui展⽰table表格的实现过程。
接下来讲⼀讲分页:此时分页包括分页的样式都已经弄好,但是问题就是我们页⾯的数据还是查出来的那么多条,并没有根据layui定义分页去显⽰,这个怎么去解决?这个问题就是说的重点:实现table表格数据的分页:因为静态json不⽀持表格⾃带分页,所以我们要在后台定义好分页的数据传⼊前台页⾯。
AntDesign实现表格搜索、分页、多选处理
AntDesign实现表格搜索、分页、多选处理要实现如下所⽰的切换分页,切换每页展⽰数据数⽬,输⼊跳转到某页,搜索可以获取表格中对应数据1、条件是后端传过来的分页接⼝数据json结构是{"code": 0,"msg": "success","data": {"list": [{"id": 24,"test1": "test1","test2": "test2"}],"totalPage": 2,"currPage": 1,"totalSize": 12,"currSize": 10}}2、在model的state建⽴⼀个数组,通过effect异步请求将请求到的数据data保存到此数组中3、写分页请求⽅法在state中给search和多选框⼀个初始值state = {search:'',selectedRows:[],}// 获取分页数据fetchTableList({ currentPage = 1, pageSize = 10 } = {}) {const { dispatch } = this.props;dispatch({type:'apt/getOperandi',payload: {page: currentPage,limit: pageSize,search: this.state.search},});}4、改变分页和多选⽅法// 多选handleSelectRows = rows => {this.setState({selectedRows: rows,});};// 改变页数handleStandardTableChange = (pagination, filtersArg, sorter) => { const { formValues } = this.state;const filters = Object.keys(filtersArg).reduce((obj, key) => {const newObj = { ...obj };newObj[key] = getValue(filtersArg[key]);return newObj;}, {});const params = {currentPage: pagination.current,pageSize: pagination.pageSize,...formValues,...filters,};if (sorter.field) {params.sorter = `${sorter.field}_${sorter.order}`;}this.fetchTableList(params);};5、搜索、重置// 搜索输⼊框inputValue=(e)=>{const search = e.target.value.trim();this.setState({ search })}// 搜索handleSearch=()=>{const that = this;this.setState({page:1},()=>{that.fetchTableList()})}//重置resetSearch=()=>{const that = this;this.setState({search:'',page:1,})setTimeout(()=>{that.fetchTableList()},0)}6、render中展⽰数据const { selectedRows} = this.state;const hasSelected = selectedRows.length>0;const { apt: { operandi },} = this.props; // 获取model中定义的数组const data = {list: operandi.list, //得到其中的数据pagination: {current: operandi.currPage, // 默认页数pageSize: operandi.currSize, // 默认每页条数showSizeChanger: true, // 展⽰当前⼏页total: operandi.totalSize, // 总条数pageSizeOptions: ['10','20', '30', '50', '100'], // 分页类别showTotal: total => `共 ${total} 条`,},};// 搜索模块const Search =(<div className={styles.search}><span>搜索。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd"><html><head><base href="<%=basePath%>"><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"><meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><title>分页</title><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><script type="text/javascript">vartableData = [ {"C0" : "临夏州_康乐县","C1" : 190893.39,"C2" : 24544.65,"AREA_ID" : "930013005"}, {"C0" : "临夏州_永靖县","C1" : 368900.35,"C2" : 40592.19,"AREA_ID" : "930013006"}, {"C0" : "兰州市_东岗分局","C1" : 88.48,"C2" : 126.4,"AREA_ID" : "930013106"}, {"C0" : "临夏州_临夏县","C1" : 107337.9,"C2" : 20612.1,"AREA_ID" : "930013008"}, {"C0" : "临夏州_广河县","C1" : 69738.07,"C2" : 34894.44,"AREA_ID" : "930013003"}, {"C0" : "临夏州_和政县","C1" : 46622.96,"C2" : 20954.97,"AREA_ID" : "930013002"}, {"C0" : "临夏州_东乡县","C1" : 96021.84,"C2" : 16725.63,"AREA_ID" : "930013004"}, {"C0" : "临夏州_临夏市中心","C1" : 1845311.12,"C2" : 129478.93,"AREA_ID" : "930013001"}, {"C0" : "天水市_秦州区","C1" : 0,"C2" : 0,"AREA_ID" : "930013801"}, {"C0" : "临夏州_积石山","C1" : 256181.79,"C2" : 15185.98,"AREA_ID" : "930013007"}, {"C0" : "酒泉_肃州区","C1" : 264312,"C2" : 402.6,"AREA_ID" : "930013701"} ];var columns = [ {"cid" : "C0","ctext" : "区县"}, {"cid" : "C1","ctext" : "客户总收入"}, {"cid" : "C2","ctext" : "当月出账费用"} ];/**page:页码pageSize:每页的记录条数此方法除了传入page和pageSize之外,还应知道的有三个参数:一、表的全部数据,json串格式,可通过action查询数据库得到。
二、表头所对应的列的key及名称,也是json串格式三、表所对应的id注:此处只是适合表头只有一行,且事先写好的情况。
您可以根据需要改一下,逻辑思路就是这样,欢迎批评指正。
*/functionsplitPage(page, pageSize) {varptable = document.getElementById("page_table");varnum = ptable.rows.length;//table.rows返回表格中包含的所有行,此处假设表由表头1行和表体N行组成//alert(num);//清除tbodyfor ( vari = num - 1; i> 0; i--) {ptable.deleteRow(i);}vartotalNums = tableData.length;//总行数vartotalPage = Math.ceil(totalNums / pageSize);//总页数var begin = (page - 1) * pageSize;//页起始位置(包括)var end = page * pageSize;//页结束位置(不包括)end = end >totalNums ? totalNums : end;//向tbody中写入数据var n = 1;//tbody的起始行for ( vari = begin; i< end; i++) {var row = ptable.insertRow(n++);varrowData = tableData[i];for ( var j = 0; j <columns.length; j++) {var col = columns[j].cid;var cell = row.insertCell(j);varcellData = rowData[col];cell.innerHTML = cellData;}}//生成分页工具条varpageBar = "第" + page + "页/共" + totalPage + "页" + " ";if (page > 1) {pageBar += "<a href=\"javascript:splitPage(" + 1 + "," + pageSize+ ");\">首页</a> ";} else {pageBar += "首页";}if (page > 1) {pageBar += "<a href=\"javascript:splitPage(" + (page - 1) + ","+ pageSize + ");\">上一页</a> ";} else {pageBar += "上一页";}if (page <totalPage) {pageBar += "<a href=\"javascript:splitPage(" + (page + 1) + ","+ pageSize + ");\">下一页</a> ";} else {pageBar += "下一页";}if (page <totalPage) {pageBar += "<a href=\"javascript:splitPage(" + (totalPage) + ","+ pageSize + ");\">尾页</a> ";} else {pageBar += "尾页";}document.getElementById("page_bar").innerHTML = pageBar;}</script></head><body onload="splitPage(1,3);"><table id="page_table"><thead><tr><th>h1</th><th>h2</th><th>h3</th></tr></thead><tbody><tr><td>111</td><td>222</td><td>333</td></tr></tbody></table><div id="page_bar"></div></body></html>。