日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > HTML >内容正文

HTML

html js 动态表格数据,HTML+JS动态表格

發布時間:2023/12/15 HTML 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 html js 动态表格数据,HTML+JS动态表格 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 設置固定列

ID日期星期

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 = $("

", {

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 = $("

").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 = $("

", {

html : val

});

return td;

// 二級屬性

case 2 :

var 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 文檔

總結

以上是生活随笔為你收集整理的html js 动态表格数据,HTML+JS动态表格的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。