国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > WEB開發 > 正文

jquery動態生成table,只可以橫向或縱向的合并

2024-04-27 15:12:21
字體:
來源:轉載
供稿:網友

今天寫了一天,寫懵逼了......

先這樣吧....

表格如下:

干了啥:

用json做了一個數據字典,存儲表格的名目(就是姓名、性別等等的這些名稱)

然后用jquery將這個字典里的值拿出來,用拼字符串的方法將表格渲染出來后插入tbody中。

json格式如下:

[    {"cname":"姓名","ename":"fullName","cols":"","rows":"","contentType":"0","editType":"0"},    {"cname":"照片預覽","ename":"","cols":"","rows":"5","contentType":"1","editType":"3"},    {"cname":"曾用名","ename":"aliasName","cols":"","rows":"","contentType":"0","editType":"0"},    {"cname":"性別","ename":"genderName","cols":"","rows":"","contentType":"0","editType":"0"},    {"cname":"教職工號","ename":"employeeCode","cols":"","rows":"","contentType":"0","editType":"0"},    {"cname":"國籍/地區","ename":"nationality","cols":"","rows":"","contentType":"0","editType":"0"},    {"cname":"身份證件類型","ename":"idCardTypeName","cols":"","rows":"","contentType":"0","editType":"0"},    {"cname":"身份證件號","ename":"idCardNo","cols":"","rows":"","contentType":"0","editType":"0"}]

好處:

實現方法肯定是比直接在html里面寫這個表格要費事兒一點兒,

但是當這個表格被應用于多個地方而且表格名目條數過多的時候,

如果要大量修改的話,其實是一件非常糟心的事兒

考慮的比較少:

每行只放兩個條目、

每個條目只考慮橫向或縱向合并、

橫向合并時,

當處在1號位上時,則這行只放一個條目;

當處在2號位上時,則結束這一行,新增一個tr行,新增的tr行只放一個條目。

縱向合并時,

則記錄需要縱向合并的行數。

啊,代碼如下......

第一次寫這種東西.....肯定是有很多需要優化的地方,先記錄一下:

var getLine = function(it,ins,type){		switch (type) {			case 1:				var tdline = '<td colspan="" rowspan="" class="t_name">'+it.cname+'</td>;'				tdline +=	'<td colspan="3" rowspan="" class="t_data data" name="'+it.ename+'"></td>';				break;			case 0:				var tdline = '<td colspan="'+it.cols+'" rowspan="'+it.rows+'" class="t_name">'+it.cname+'</td>;'				tdline +=	'<td colspan="'+it.cols+'" rowspan="'+it.rows+'" class="t_data data" name="'+it.ename+'"></td>';				break;			default:			  break;		}		if(ins == 2){tdline +=	"</tr>"};		return tdline;	};	var loadTpl = function(data){		var dataLen = data.length;		var tplStr = []; //模板		var rowCount = 0; //獲取縱向合并的數目		var lineStr; //一行tr的內容		var lineCount = 0;//一行的塊數計算		for(var i in data){			if(data[i].rows > 0){				rowCount = data[i].rows;			}			if(lineCount == 0){lineStr = "<tr>";}			if(rowCount > 0 || data[i].cols > 0){				if(rowCount > 0){					--rowCount;					lineStr += getLine(data[i],2,0);					tplStr.push(lineStr);					lineStr = "";					lineCount = 0;				}				if(data[i].cols > 0){					if(lineCount == 0){						lineStr += getLine(data[i],2,1);						tplStr.push(lineStr);						lineStr = "";						lineCount = 0;					}else{						lineStr += "</tr><tr>";						lineStr += getLine(data[i],2,1);						tplStr.push(lineStr);						lineStr = "";						lineCount = 0;					}				}			}else{				switch (lineCount) {					case 0:						lineStr += getLine(data[i],1,0);						lineCount++;						if(dataLen-1 == i){							lineStr += "</tr>";							tplStr.push(lineStr);							lineStr = "";							lineCount = 0;						}						break;					case 1:						lineStr += getLine(data[i],2,0);						tplStr.push(lineStr);						lineStr = "";						lineCount = 0;						break;					default:						break;				}			}		};		dom.find(".fragment-content table tbody").html(tplStr);	};

寫了三次......每次寫的都不對......

結果下班前的半個小時,一次性搞定了......

狀態不對真可怕......

***********************************************2月8日分割線******************************************************

昨晚給我老大瞄了一眼代碼,拼字符串被罵了。

會阻礙js的運行速度,要改用push。

待會兒去百度一下。

出了一個問題....

var loadTpl = function(data){		var tplStr ;		$.getJSON("../js/teacherInfoTpl.json",function(data){			tplStr = archivesSet.dataRender(data); //模板		});		dom.find(".fragment-content table tbody").html(tplStr);	};這里對tplStr的賦值出了getJSON這個方法居然取不到值。

var loadTpl = function(data){		var tplStr ;		$.getJSON("../js/teacherInfoTpl.json",function(data){			tplStr = archivesSet.dataRender(data); //模板			dom.find(".fragment-content table tbody").html(tplStr);		});	};

只有在getJSON內部才能去將tplStr html進tbody里

...百度了一下.....原來是getJSON方法和console.log異步執行的問題......

百度結果戳這里

問題解答是這樣的:

因為getJson是異步執行的,即console.log和getJson是一塊執行的,并沒有getJson執行完再執行console.log,所以全局變量并沒有賦值就輸出了解決辦法:在getJson前面加一句$.AjaxSettings.async = false;

所以改成下面這樣,加一行代碼就可以了

var loadTpl = function(data){		var tplStr;		$.ajaxSettings.async = false;		$.getJSON("../js/teacherInfoTpl.json",function(data){			tplStr = archivesSet.dataRender(data); //模板		});		dom.find(".fragment-content table tbody").html(tplStr);	};


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 石阡县| 景德镇市| 北宁市| 桐乡市| 万荣县| 交口县| 密山市| 福清市| 廊坊市| 准格尔旗| 孝义市| 江孜县| 临武县| 衡南县| 思南县| 师宗县| 白玉县| 临邑县| 霞浦县| 招远市| 宝山区| 汽车| 延安市| 宝丰县| 贺兰县| 沈丘县| 彭州市| 阿图什市| 长寿区| 荣昌县| 苍山县| 开平市| 津市市| 巴南区| 常州市| 清丰县| 外汇| 黄龙县| 江口县| 始兴县| 芒康县|