`

HTML+JS动态表格

阅读更多

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 文档

  • 大小: 51.2 KB
分享到:
评论

相关推荐

    HTML+JavaScript动态表格

    在IT领域,HTML和JavaScript是构建网页交互性的重要工具,尤其在创建动态表格时,这两者结合使用可以实现丰富的用户界面。本项目“HTML+JavaScript动态表格”专注于提供一种高效且用户友好的方式来处理表格数据,...

    html+css+js表格动态增删改与xml加载与保存

    总的来说,"html+css+js表格动态增删改与xml加载与保存"这个项目涵盖了网页开发中的基本技能,包括动态HTML操作、CSS美化、JavaScript事件处理和XML数据交互。掌握这些技术,能够帮助开发者构建具有强大功能和良好...

    div+css百分比表格+DIV+CSS+JS静态分页程序+DIV+CSS像素表格

    div+css百分比表格+DIV+CSS+JS静态分页程序+DIV+CSS像素表格 百分比表格(用DIV+CSS)以百分比显示,可以根据窗口的大小自动调节所显示的大小! DIV+CSS+JS静态分页程序可兼容主流浏览器(IE、FF、Opera) DIV+CSS表格...

    js+html写的实现表格的动态增删改查和表单验证

    综上所述,使用JavaScript和HTML结合可以实现丰富的用户交互,创建动态表格并进行数据操作,同时配合表单验证保证数据质量。通过学习和掌握这些技能,开发者能够构建出高效、友好的前端应用。在实际项目中,还可能...

    php+html+css+js实现表格表单处理

    总的来说,"php+html+css+js实现表格表单处理"涵盖了Web开发中的基础流程,从用户界面设计到数据处理和存储,展示了前后端协作的重要性和实用性。Myconn文件的使用则进一步强调了数据库操作在这一过程中的关键角色。...

    Html+Css+Javascript从入门到精通.pdf

    - **框架内使用JavaScript**:实现动态更新框架内容。 - **Cookies管理**:设置、读取和删除Cookies。 **第二十二章:建立日历控件** - **综合应用**:利用JavaScript制作一个功能完善的日历控件。 #### 第四部分...

    ASP+JS实现表格实时添加行

    "ASP+JS实现表格实时添加行"这个主题是关于如何在网页上利用这两种技术动态地在HTML表格中添加新行。以下将详细介绍这一过程。 首先,我们需要一个HTML页面作为用户界面,这里可能是`demo.html`文件。在HTML中,...

    js+实现+滚动的表格

    JavaScript(简称JS)是实现这一功能的关键,它是一种轻量级的解释型编程语言,广泛应用于网页和应用程序,特别是处理用户交互、浏览器端的动态内容和Ajax(异步JavaScript和XML)通信。 要创建一个滚动的表格,...

    html+css+script 简单表格

    总结,"html+css+script 简单表格"主题涵盖了使用HTML创建表格结构,用CSS美化表格样式,以及用JavaScript增强表格功能的全过程。通过学习这些知识,开发者可以创建出功能丰富且视觉美观的网页表格。而压缩包中的...

    学生信息管理系统(html + js + css)

    总结来说,"学生信息管理系统(html + js + css)"是一个集成了HTML结构、CSS样式和JavaScript交互的实例,它充分展示了前端技术在实际项目中的应用,是学习和提升Web开发技能的理想平台。通过这样的项目实践,开发者...

    vue.js+json动态表格数据查询筛选代码

    在这个项目中,"vue.js+json动态表格数据查询筛选代码"利用Vue.js的强大功能,结合JSON数据来实现一个动态表格,同时提供了数据查询和筛选的功能。以下是关于这个项目的一些关键知识点和实现细节: 1. **Vue实例和...

    html+js+css 工人信息管理功能(增删改查)前端实现,不连数据库

    3. JavaScript(JS)核心功能:JS是实现动态交互的关键,用于处理用户输入、更新DOM(文档对象模型)以反映数据变化、执行验证逻辑等。在这个系统中,JS可能用于实现增删改查的逻辑,如添加新工人信息,删除选定的...

    javascript动态添加表格数据行

    在JavaScript编程中,动态添加表格数据行是一种常见的需求,特别是在构建交互式的Web应用程序时。这个功能允许用户在不刷新整个页面的情况下添加新的记录,提高了用户体验。在这个例子中,我们将探讨如何利用...

    利用JS+CSS实现滚动表格数据展示

    为了让表格数据动态滚动,我们可以使用JavaScript来处理。这里可以使用`setInterval`函数定时更新表格中的数据,或者监听用户的滚动事件,根据需要加载更多数据。例如,如果数据是从服务器动态获取的,可以使用Ajax...

    html+js+css固定表格行列

    为了解决这些问题,我们可以使用JavaScript(如jQuery库)来动态调整列宽和表格高度。首先,我们需要获取表头和数据行的宽度,然后将其应用于对应的固定表头。 ```javascript $(document).ready(function() { var ...

    HTML+CSS+JavaScript网页制作案例教程(第2版)-教学大纲.zip

    《HTML+CSS+JavaScript网页制作案例教程(第2版)》是一本全面涵盖网页制作基础知识与实践技巧的教材。此教学大纲旨在引导学生系统学习网页设计的核心技术,通过理论讲解和实际案例,使学习者掌握网页开发的基本流程...

    纯js和html可编辑的table(表格)

    综上所述,"纯js和html可编辑的table(表格)"项目结合了HTML的结构、JavaScript的交互性以及CSS的美化,实现了用户可以直接在网页上编辑表格的功能。这不仅可以提高用户体验,也简化了数据输入和管理的流程。通过...

    js 动态表格增 删 查 改

    在JavaScript编程中,动态表格是一种常见的交互式网页元素,它允许用户在运行时添加、删除、检查和修改数据。这种功能对于数据展示和管理尤为重要,特别是在Web应用中处理大量结构化信息时。以下是对"js 动态表格 增...

    html+css+js实现登录注册界面.rar

    JavaScript作为客户端脚本语言,赋予了网页动态交互的能力。在登录注册界面,JS可以实现用户输入验证,比如检查用户名和密码是否为空、密码强度是否符合要求等。同时,它可以处理点击事件,比如当用户点击登录按钮时...

    xml+xslt + js表格排序

    标题中的“XML+XSLT+JS表格排序”是指一种基于Web的技术组合,用于创建可交互的数据展示。XML(eXtensible Markup Language)是一种标记语言,常用于存储和传输结构化数据。XSLT(XSL Transformations)是用于转换...

Global site tag (gtag.js) - Google Analytics