1. 设置固定列
<table id="reportGrid"> <!-- 表头 --> <thead> <tr> <th propName="reportId" floor="1">ID</th> <th propName="pointDate" floor="1" valCalc="formatDate">日期</th> <th propName="weekday" floor="1" valCalc="convertToWeekDay">星期</th> </tr> </thead> <!-- 数据 --> <tbody></tbody> </table>
propName -- 属性名
valCalc -- 设置值时, 特定回调函数
2. 动态生成可变列
这里模拟服务器获取数据
// 返回数据的格式: /* { points : Array, pointDate : Date, reportId : Number, reportDatas : Map } */ function getDate(date) { var datas = []; for (var i = 0; i < 5; i++) { var reportDatas = {}; reportDatas['1002'] = {reportVal:rd(203), reportTotal:203}; reportDatas['1003'] = {reportVal:rd(204), reportTotal:204}; reportDatas['1007'] = {reportVal:rd(205), reportTotal:205}; reportDatas['2003'] = {reportVal:rd(206), reportTotal:206}; reportDatas['2007'] = {reportVal:rd(207), reportTotal:207}; datas[i] = { reportId : 1000 - i, titles : ['1002', '1003', '1007', '2003', '2007'], pointDate : date.addDays(0 - i), reportDatas : reportDatas } }; return datas; }
Ps :
通常开发顺序是: 先设计前端UI, 再根据需要的数据项生成对应的 JSON 对象
这里生成剩余的表头信息
// 生成需要的表头信息 function initTitles(grid, titles) { var map = {}; // 留存数据 map["1002"] = "次日留存"; map["1003"] = "三日留存"; map["1007"] = "七日留存"; map["10015"] = "十五日留存"; // 保留数据 map["2003"] = "三日保留"; map["2007"] = "七日保留"; // 找到表头区域 var heads = grid.find("thead").find("tr"); $.each(titles, function(idx, val) { var title = $("<th />", { typeVal : val, html : map[val], floor : "2" }).appendTo(heads); }); }
3. 填充数据
// 填充数据 function fillDatas(grid, datas) { // 获取表头 var heads = grid.find("thead>tr>th"); // 填充值 var tbody = grid.find("tbody"); $.each(datas, function(dIdx, data) { // 每次循环数据数组, 得到一个新的行对象 var tr = $("<tr />").appendTo(tbody); $.each(heads, function(idx, head) { head = $(head); var floor = parseInt(head.attr("floor")); fillData(floor, grid, data, head).appendTo(tr); }); }); }
下面是填充单行数据时需要用到的回调函数
function fillData(floor, grid, data, head) { switch(floor) { // 一级属性 case 1 : // 获取一级属性值 var val = data[head.attr("propName")]; // 调用处理函数 var fn = head.attr("valCalc"); fn && (val = eval(fn)(data)); // 追加到数据区域 var td = $("<td />", { html : val }); return td; // 二级属性 case 2 : var td = $("<td />", { html : getPercent(head, data) }).css({ "text-align" : "right" }); return td; default : window.console && console.log("无匹配的floor值:" + floor); } }
如果对应的 floor 值为 1, 则表示可直接获取当前属性值. 否则需要解析后才能获取值(假设当前仅有两种属性层次定义), 作者当前需求很简单, 仅仅获取百分比
// 获取二级属性指定值 -- function getPercent(head, data) { var typeVal = head.attr("typeVal"); var thisData = data.reportDatas[typeVal]; var percent = thisData.reportVal / thisData.reportTotal * 10000; var val = parseInt(percent) / 100 + ""; var idx = val.lastIndexOf("."); if (idx == -1) { val += "."; idx = val.lastIndexOf("."); } if (idx == val.length - 1) { val += "00"; } return val + "%"; }
运行效果如图, 关于下面图表部分, 请参阅 HighCharts 文档
相关推荐
在IT领域,HTML和JavaScript是构建网页交互性的重要工具,尤其在创建动态表格时,这两者结合使用可以实现丰富的用户界面。本项目“HTML+JavaScript动态表格”专注于提供一种高效且用户友好的方式来处理表格数据,...
总的来说,"html+css+js表格动态增删改与xml加载与保存"这个项目涵盖了网页开发中的基本技能,包括动态HTML操作、CSS美化、JavaScript事件处理和XML数据交互。掌握这些技术,能够帮助开发者构建具有强大功能和良好...
div+css百分比表格+DIV+CSS+JS静态分页程序+DIV+CSS像素表格 百分比表格(用DIV+CSS)以百分比显示,可以根据窗口的大小自动调节所显示的大小! DIV+CSS+JS静态分页程序可兼容主流浏览器(IE、FF、Opera) DIV+CSS表格...
HTML+CSS+JS实现的下拉菜单源码HTML+CSS+JS实现的下拉菜单源码HTML+CSS+JS实现的下拉菜单源码HTML+CSS+JS实现的下拉菜单源码HTML+CSS+JS实现的下拉菜单源码HTML+CSS+JS实现的下拉菜单源码HTML+CSS+JS实现的下拉菜单...
综上所述,使用JavaScript和HTML结合可以实现丰富的用户交互,创建动态表格并进行数据操作,同时配合表单验证保证数据质量。通过学习和掌握这些技能,开发者能够构建出高效、友好的前端应用。在实际项目中,还可能...
总的来说,"php+html+css+js实现表格表单处理"涵盖了Web开发中的基础流程,从用户界面设计到数据处理和存储,展示了前后端协作的重要性和实用性。Myconn文件的使用则进一步强调了数据库操作在这一过程中的关键角色。...
- **框架内使用JavaScript**:实现动态更新框架内容。 - **Cookies管理**:设置、读取和删除Cookies。 **第二十二章:建立日历控件** - **综合应用**:利用JavaScript制作一个功能完善的日历控件。 #### 第四部分...
"ASP+JS实现表格实时添加行"这个主题是关于如何在网页上利用这两种技术动态地在HTML表格中添加新行。以下将详细介绍这一过程。 首先,我们需要一个HTML页面作为用户界面,这里可能是`demo.html`文件。在HTML中,...
JavaScript(简称JS)是实现这一功能的关键,它是一种轻量级的解释型编程语言,广泛应用于网页和应用程序,特别是处理用户交互、浏览器端的动态内容和Ajax(异步JavaScript和XML)通信。 要创建一个滚动的表格,...
总结,"html+css+script 简单表格"主题涵盖了使用HTML创建表格结构,用CSS美化表格样式,以及用JavaScript增强表格功能的全过程。通过学习这些知识,开发者可以创建出功能丰富且视觉美观的网页表格。而压缩包中的...
总结来说,"学生信息管理系统(html + js + css)"是一个集成了HTML结构、CSS样式和JavaScript交互的实例,它充分展示了前端技术在实际项目中的应用,是学习和提升Web开发技能的理想平台。通过这样的项目实践,开发者...
在这个项目中,"vue.js+json动态表格数据查询筛选代码"利用Vue.js的强大功能,结合JSON数据来实现一个动态表格,同时提供了数据查询和筛选的功能。以下是关于这个项目的一些关键知识点和实现细节: 1. **Vue实例和...
3. JavaScript(JS)核心功能:JS是实现动态交互的关键,用于处理用户输入、更新DOM(文档对象模型)以反映数据变化、执行验证逻辑等。在这个系统中,JS可能用于实现增删改查的逻辑,如添加新工人信息,删除选定的...
在JavaScript编程中,动态添加表格数据行是一种常见的需求,特别是在构建交互式的Web应用程序时。这个功能允许用户在不刷新整个页面的情况下添加新的记录,提高了用户体验。在这个例子中,我们将探讨如何利用...
为了让表格数据动态滚动,我们可以使用JavaScript来处理。这里可以使用`setInterval`函数定时更新表格中的数据,或者监听用户的滚动事件,根据需要加载更多数据。例如,如果数据是从服务器动态获取的,可以使用Ajax...
为了解决这些问题,我们可以使用JavaScript(如jQuery库)来动态调整列宽和表格高度。首先,我们需要获取表头和数据行的宽度,然后将其应用于对应的固定表头。 ```javascript $(document).ready(function() { var ...
《HTML+CSS+JavaScript网页制作案例教程(第2版)》是一本全面涵盖网页制作基础知识与实践技巧的教材。此教学大纲旨在引导学生系统学习网页设计的核心技术,通过理论讲解和实际案例,使学习者掌握网页开发的基本流程...
综上所述,"纯js和html可编辑的table(表格)"项目结合了HTML的结构、JavaScript的交互性以及CSS的美化,实现了用户可以直接在网页上编辑表格的功能。这不仅可以提高用户体验,也简化了数据输入和管理的流程。通过...
在JavaScript编程中,动态表格是一种常见的交互式网页元素,它允许用户在运行时添加、删除、检查和修改数据。这种功能对于数据展示和管理尤为重要,特别是在Web应用中处理大量结构化信息时。以下是对"js 动态表格 增...
JavaScript作为客户端脚本语言,赋予了网页动态交互的能力。在登录注册界面,JS可以实现用户输入验证,比如检查用户名和密码是否为空、密码强度是否符合要求等。同时,它可以处理点击事件,比如当用户点击登录按钮时...