js对HTML中得TABLE表格分类求和
javascript吧
全部回复
仅看楼主
level 1
比如有各表格,A列,B列
A列有:1,2,1,3
B列有:1,1,1,1
根据A列内容分类,计算B列得合计,比如A列中有1得类,B列里有2个1,那么求和就是2
2021年11月03日 01点11分 1
level 10
function getTdValue(){ let tableId = document.getElementById("tab"); let arr = ['合计']; for(let i =1;i<tableId.rows[0].cells.length;i++){ arr.push(0) } for(let i =0 ;i<tableId.rows.length;i++){ for(let j = 1; j<tableId.rows[i].cells.length;j++){ for(let k = 0; k<tableId.rows.length;k++){ if(tableId.rows[k].cells[j].innerHTML === tableId.rows[i].cells[0].innerHTML){ arr[j]+=1 } } } } console.log(arr)    }
<table style="width:100%; height:100%;" id="tab" onclick="getTdValue()" border="1" cellpadding="1" cel
lsp
acing="1">     <tr>       <td>苹果</td>       <td>苹果</td>       <td>xxx</td>       <td>xxx</td>     </tr>     <tr>       <td>香蕉</td>       <td>苹果</td>       <td>西瓜</td>       <td>土豆</td>     </tr>     <tr>       <td>西瓜</td>       <td>xxx</td>       <td>土豆</td>       <td>20</td>     </tr>     <tr>       <td>西红柿</td>       <td>柿子</td>       <td>苹果</td>       <td>柿子</td>     </tr>     <tr>       <td>地瓜</td>       <td>地瓜</td>       <td>番茄</td>       <td>西红柿</td>     </tr>     <tr>       <td>白菜</td>       <td>地瓜</td>       <td>番茄</td>       <td>白菜</td>     </tr>   </table> 看看是不是这样
2021年11月03日 04点11分 4
很高兴你的回答,想要的效果是这样,有一个表格,根据表格中某一行的内容,根据该行的重复值,计算另一行的合计,比如 A,1 A,1 B,2 C,3 结果应该是A是2,B是2,C是3
2021年11月04日 06点11分
@我是谁来了Ω 能把表格的内容和要实现的效果截图出来吗
2021年11月04日 08点11分
@贴吧用户_aJDbD8a 3楼是图,是按币制分类汇总,美元和美元价格相加,人民币和人民币价格相加,依次类推
2021年11月05日 02点11分
@0 楼下
2021年11月05日 02点11分
level 1
如图,如果币制那一栏有,美元,人民币,欧元,怎么根据这列内容,求和价格那列,
2021年11月05日 01点11分 5
level 10
let tableData=[{name:'李四',id:1,sex:'男'},{name:'王五',id:2,sex:'男'}] let str='<table id="table1" style="width:100%; height:100%;" border="1" cellpadding="1" cellspacing="1">' tableData.forEach(item => { str+=`<tr> <td>${item.name}</td> <td>${item.sex}</td> <td class="del" onclick="clickTd('${item.id}')">删除</td> </tr>` }) str+='</table>'; document.write(str); function clickTd(val){ console.log(val) }
2021年11月05日 02点11分 6
level 10
function getTdValue(){ let tableId = document.getElementById("tab"); let currency = []; for(let i = 1; i<tableId.rows.length; i++){ let isNew=true; currency.forEach(item =>{ if(item.name === tableId.rows[i].cells[0].innerHTML){ isNew = false } }) if(isNew) { currency.push({name:tableId.rows[i].cells[0].innerHTML,total:0}); } currency.forEach(item =>{ if(item.name == tableId.rows[i].cells[0].innerHTML){ item.total+=Number(tableId.rows[i].cells[1].innerHTML) } }) } console.log(currency) }
<table style="width:100%; height:100%;" id="tab" onclick="getTdValue()" border="1" cellpadding="1" cellspacing="1"> <tr> <th>币制</th> <th>单价</th> </tr>    <tr>       <td>美元</td>       <td>40</td>     </tr>     <tr>       <td>欧元</td>       <td>30</td>     </tr>     <tr>       <td>人民币</td>       <td>20</td>     </tr> <tr>       <td>美元</td>       <td>20</td>     </tr> <tr>       <td>人民币</td>       <td>70</td>   </tr> <tr>       <td>英镑</td>       <td>20</td>    </tr>   </table>
2021年11月05日 02点11分 9
level 1
<table style="width:100%; height:100%;" id="tab" onclick="getTdValue()" border="1" cellpadding="1" cellspacing="1">
<tr>
<td>商品名称</td><td>单位</td><td>数量</td><td>币制</td><td>单价</td><td>总价</td>
</tr>
<tr>
<td>苹果</td><td>个</td><td>10</td><td>美元</td><td>10</td><td>100</td>
</tr>
<tr>
<td>橘子</td><td>件</td><td>20</td><td>美元</td><td>20</td><td>400</td>
</tr>
<tr>
<td>菠萝</td><td>筐</td><td>30</td><td>欧元</td><td>1</td><td>30</td>
</tr>
<tr>
<td>芒果</td><td>个</td><td>40</td><td>人民币</td><td>2</td><td>80</td>
</tr>
<tr>
<td>合计</td><td></td><td>50个20件30筐</td><td></td><td></td><td>美元500欧元30人民币80</td>
</tr>
</table>
要的效果在这里,表格是一个动态表格,行不固定@
贴吧用户_aJDbD8a
2021年11月05日 05点11分 14
主要是合计那行,怎么根据分类汇总
2021年11月05日 05点11分
level 10
let tableData = [ {name:'菠萝',unit:'框',num:1,currency:'欧元',price:2,total:0}, {name:'苹果',unit:'个',num:5,currency:'美元',price:10,total:0}, {name:'橘子',unit:'件',num:2,currency:'美元',price:20,total:0}, {name:'菠萝',unit:'框',num:1,currency:'欧元',price:2,total:0}, {name:'芒果',unit:'件',num:3,currency:'人民币',price:3,total:0}, {name:'菠萝',unit:'框',num:1,currency:'人民币',price:2,total:0}, ] let str='<table id="table1" style="width:100%; height:100%;" border="1" cellpadding="1" cellspacing="1">' str+='<tr>' let thList=['商品名称','单位','数量','币制','单价','总价']; thList.forEach(item =>{ str+=`<th>${item}</th>` }) str+='</tr>'; let unitList = []; tableData.forEach(item =>{ unitList.push({unit:item.unit,num:item.num,currency:item.currency,price:item.price,total:item.num*item.price}) }) for(let i=0;i<unitList.length;i++){ for(let j=i+1;j<unitList.length;j++){ if(unitList[i].unit === unitList[j].unit && !unitList[i].isRepeatUnit){ unitList[i].num = unitList[i].num + unitList[j].num; unitList[j].isRepeatUnit=true } if(unitList[i].currency === unitList[j].currency && !unitList[i].isRepeat){ unitList[i].total = unitList[i].total+ unitList[j].total; unitList[j].isRepeat=true } } } let totalList1 = unitList.filter(item =>{ return !item.isRepeatUnit }) let totalList2 = unitList.filter(item =>{ return !item.isRepeat }) tableData.forEach(item => { item.total = item.price*item.num str+=`<tr> <td>${item.name}</td> <td>${item.unit}</td> <td>${item.num}</td> <td>${item.currency}</td> <td>${item.price}</td> <td>${item.price*item.num}</td> </tr>` }) str+=`<tr><td>合计</td><td></td><td>` totalList1.forEach(item =>{ str+=item.num+item.unit }) str+='</td><td></td><td></td><td>' totalList2.forEach(item =>{ str+=item.total+item.currency }) str+='</tr></table>'; document.write(str)
我能想到的就这样了,你可以去https://segmentfault.com/这里问问那些大佬
2021年11月05日 09点11分 15
1