第一个页面一共有两个table,第一个table是后台的数据,第二个table是点击第一个table里面的tr.把数据渲染上去,第二个页面是将第一个页面的的第二个table的数据拿出来结算的,这个怎么做
这个难度 不大 吧应该, 只需要 记录 第一个 表格点击的 数据 ,给第二个表格 。表格都是 循环渲染出来的
看下这篇博客,也许你就懂了,链接:js动态写入table中的数据可以尝试一下动态绑定 $("#tab").on("click","tr",function()
你是用纯js脚本实现吗?
类似于这样,当然行里面的数据需要自己取到变量然后赋值,最原始写法
table.innerHTML+='张三速走20'
这个再同一个页面上有table1和table2,table2的数据来源于table1中的选择,然后把选中的table1中的数据显示到table2中,然后针对table2的数据进行合并计算。
实现思路,JS选中table的tr后,这个数据可以直接获取到然后动态生成table2的tr,针对table2中的数据需要有一个结算按钮,点击后这个数据就可以进行结算,结算的思路建议是可以使用js获取到你需要结算的列值然后累加即可,但建议还是以服务端合计的为准,
如有不明白可以留言。
success: function (data) {
var obj = data;
console.log(obj);
var html = "";
//清空table中的html
$("#tbody").html("");
for (var i = 0; i < data.data.length; i++) {
html = "" +
"" +
"" + data.data[i].id + "" +
"" + data.data[i].depart + "" +
"" + data.data[i].name + "" +
"" + data.data[i].sex + "" +
"" + data.data[i].work + "" +
"" + data.data[i].year + "" +
"" + data.data[i].place + "" +
"" + data.data[i].worktime + "" +
"" + data.data[i].entrytime + "" +
"<a href='#' class='tablelink' οnclick='stopUser()'>禁用 | <a href='#' class='tablelink' οnclick='startUser();'>点击启用"+
"<a href='#' class='tablelink' οnclick='defaultaa(this)'>修改 | <a href='#' class='tablelink' οnclick='deleteUserById(this);'>删除"
"";
$("#tbody").append(html);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
隐藏inpu框
//隐藏不留痕迹
//占位隐藏,会留下空白
1
2
3
4
5
6
js点击获取当前行
1
2
3
4
function myclick(obj){
var tr1 = obj.parentNode.parentNode; //获取当前对象的父节点的父节点(也就是tr)
//alert(tr1.rowIndex);
//alert(tr1.cells[0].innerText);
//alert(tr1.cells[3].innerHTML);
tr1.cells[3].innerHTML=“赋值”; //对第4个的td赋值(下标从0开始)
$(this).parents(“tr”).find(“input[name=examineId]”).val(); // 获取table隐藏input值
}
总之,原理就是:点击获取第一个tr,赋值到第二个table(这里要对应上),可以用隐藏的input保存点击获取的值,也可以提交到新页面时获取第二个table的对应的tr的值,这个具体要看你的结构代码
纯JS的话,本地存储然后调用
tableA
渲染数据时,将每列td
添加name
或者class
等标识,用于后续计算;tableA
,获取到tr
插入到tableB
;name
或者class
获取tableB
的dom,取里面的值进行计算。不难 ,逻辑无非就是点击行copy一份当前数据,然后复制到另一个table上,但纯js实现起来比较麻烦
vue下实现比较简单