js 拼接html 表格,js合并table单元格(拼table的时候并不知道具体几行几列)

Sys.Application.add_load(function () {

var tab = document.getElementById("ctl00_ContentPlaceHolder1_viewcontrolTT_Repeater1_ctl00_viewcontrolTT_grid"); //要合并的tableID

if (!tab) {

alert("未获取到表格!");

}

else {

//从第二行开始,排除标题行

var startRow = 1;

//循环记录表格中td的内容,用来判断td中的value是否发生了改变

var td1TempV = "";

var td2TempV = "";

var td3TempV = "";

//如果td的值相同,那么变量加1, 否则将临时变量加入集合中

var rowCount1 = 1;

var rowCount2 = 1;

var rowCount3 = 1;

//得到相同内容的行数的集合www.2cto.com

var totalcount1 = new Array();

var totalcount2 = new Array();

var totalcount3 = new Array();

for (var i = 1; i < tab.rows.length; i++) {

//首先拿出来td的值

var td1Text = tab.rows[i].cells[0].innerText;

var td2Text = tab.rows[i].cells[1].innerText;

var td3Text = tab.rows[i].cells[2].innerText;

//如果是第一次走循环,直接continue;

if (i == startRow) {

td1TempV = td1Text;

td2TempV = td2Text;

td3TempV = td3Text;

continue;

}

//如果当前拿出来的值和出处的值相同,那么将临时数量加1,否则添加到集合里面

if (td1TempV == td1Text && td1Text != null && td1Text != "") {

rowCount1++;

} else {

totalcount1.push(rowCount1);

td1TempV = td1Text;

rowCount1 = 1;

}

if (td2TempV == td2Text && td2Text != null && td2Text != "") {

rowCount2++;

} else {

totalcount2.push(rowCount2);

td2TempV = td2Text;

rowCount2 = 1;

}

if (td3TempV == td3Text && td3Text != null && td3Text != "") {

rowCount3++;

} else {

totalcount3.push(rowCount3);

td3TempV = td3Text;

rowCount3 = 1;

}

//判断是否是循环的最后一次,如果是最后一次那个直接将当前的数量存储到集合里面

if (i == tab.rows.length - 1) {

totalcount1.push(rowCount1);

totalcount2.push(rowCount2);

totalcount3.push(rowCount3);

}

}

//临时变量,再循环中判断是否和数组中的一项值相同

var tNum1 = 0;

var tNum2 = 0;

var tNum3 = 0;

//注意这个循环是倒着来的

for (var i = tab.rows.length - 1; i >= startRow; i--) {

//临时变量,存储td

var tTd1 = tab.rows[i].cells[0];

var tTd2 = tab.rows[i].cells[1];

var tTd3 = tab.rows[i].cells[2];

tNum1++;

tNum2++;

tNum3++;

if (tab.rows.length == 2) {

continue;

}

//如果发现tNum和数组中最后一个值相同,那么就可以断定相同的td已经结束[只是其中一个]

if (tNum1 == totalcount1[totalcount1.length - 1]) {

//给当前td添加rowSpan属性

tTd1.setAttribute("rowSpan", totalcount1[totalcount1.length - 1]);

tTd1.setAttribute("style", "background-color:#ffffff");

//将数组的最后一个元素弹出

totalcount1.pop();

tNum1 = 0;

} else {

//删除当前td

tab.rows[i].removeChild(tTd1);

}

if (tNum2 == totalcount2[totalcount2.length - 1]) {

//给当前td添加rowSpan属性

tTd2.setAttribute("rowSpan", totalcount2[totalcount2.length - 1]);

tTd2.setAttribute("style", "background-color:#ffffff");

//将数组的最后一个元素弹出

totalcount2.pop();

tNum2 = 0;

} else {

//删除当前td

tab.rows[i].removeChild(tTd2);

}

if (tNum3 == totalcount3[totalcount3.length - 1]) {

//给当前td添加rowSpan属性

tTd3.setAttribute("rowSpan", totalcount3[totalcount3.length - 1]);

tTd3.setAttribute("style", "background-color:#ffffff");

//将数组的最后一个元素弹出

totalcount3.pop();

tNum3 = 0;

} else {

//删除当前td

tab.rows[i].removeChild(tTd3);

}

}

}

});

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 JavaScript 中,我们可以使用字符串拼接的方式动态生成表格,并为表格的行绑定点击事件,以获取该行对应的 JSON 数据。以下是一个示例: ```javascript // 定义一个 JSON 数据数组 var data = [ { name: "张三", age: 18, gender: "男" }, { name: "李四", age: 20, gender: "女" }, { name: "王五", age: 22, gender: "男" } ]; // 创建一个空的 table 元素 var myTable = document.createElement("table"); // 创建表头行 var headerRow = myTable.insertRow(); // 添加表头单元格 var nameHeader = headerRow.insertCell(); nameHeader.innerHTML = "姓名"; var ageHeader = headerRow.insertCell(); ageHeader.innerHTML = "年龄"; var genderHeader = headerRow.insertCell(); genderHeader.innerHTML = "性别"; // 循环遍历 JSON 数据数组,创建表格行 for (var i = 0; i < data.length; i++) { // 创建表格行 var row = myTable.insertRow(); // 添加表格单元格 var nameCell = row.insertCell(); nameCell.innerHTML = data[i].name; var ageCell = row.insertCell(); ageCell.innerHTML = data[i].age; var genderCell = row.insertCell(); genderCell.innerHTML = data[i].gender; // 为表格行绑定点击事件,并传入对应的 JSON 数据 row.onclick = function() { handleClick(data[i]); } } // 将表格添加到页面中 document.body.appendChild(myTable); // 点击事件的处理函数 function handleClick(data) { alert(JSON.stringify(data)); } ``` 在上面的示例中,我们首先定义了一个 JSON 数据数组 `data`,其中包含了三个对象,每个对象都有 `name`、`age` 和 `gender` 三个属性。接着,我们创建了一个空的 `table` 元素,并动态生成了表头行和表格行,将 JSON 数据数组中的数据填充到表格中。在为表格行绑定点击事件时,我们使用了闭包来保存对应的 JSON 数据,以便在点击事件的处理函数中获取。最后,我们将表格添加到页面中。 当用户点击表格行时,点击事件的处理函数 `handleClick()` 将会被调用,并且将点击行对应的 JSON 数据传入其中。在这个处理函数中,我们使用 `JSON.stringify()` 方法将 JSON 数据转换成字符串形式,并使用 `alert()` 方法弹出这个字符串,从而实现了点击行获取 JSON 数据的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值