如何使用jQuery读取图书购物车表格的每一行数据?
如何用jQuery读取图书购物车表格的每一行数据?
没问题,我来帮你搞定这个需求~下面我会给出几种实用的实现方式,你可以根据自己的场景选择:
基础实现:精准提取每一行数据
如果你的表格列顺序固定,直接通过索引提取单元格内容是最直接的方式:
// 初始化一个数组用来存储所有购物车数据 const cartData = []; // 遍历表格中除表头外的所有数据行 $('table tr:not(:first)').each(function() { // 获取当前行的所有单元格 const cells = $(this).find('td'); // 提取每个单元格的内容,整理成结构化对象 const rowInfo = { schoolNo: $(cells[0]).text().trim(), resourceType: $(cells[1]).text().trim(), resourceNo: $(cells[2]).text().trim(), resourceTitle: $(cells[3]).text().trim(), quantity: parseInt($(cells[4]).text().trim(), 10) }; // 将当前行数据存入数组 cartData.push(rowInfo); }); // 现在cartData就是包含所有行数据的数组,可按需使用 console.log(cartData);
代码说明:
$('table tr:not(:first)'): 选中表格里除第一行(表头)外的所有数据行。注意:如果页面上有多个表格,最好给你的图书购物车表格加个ID(比如id="bookCart"),然后用$('#bookCart tr:not(:first)')来精准选择,避免干扰其他表格。.each(): jQuery的遍历方法,回调函数里的this代表当前遍历到的<tr>元素。.text().trim(): 提取单元格文本并去除前后空白字符,避免不必要的空格干扰。parseInt(..., 10): 把数量字段转换成数字类型,方便后续做计算或统计。
灵活适配版:动态匹配表头
如果表格的列顺序可能会变动,我们可以先读取表头文本,再动态匹配单元格内容,这样代码的适应性更强:
// 先获取表头文本,转换成对象属性名(小写+去掉空格) const headers = $('table tr:first th').map(function() { return $(this).text().trim().toLowerCase().replace(' ', ''); }).get(); const cartData = []; // 遍历数据行 $('table tr:not(:first)').each(function() { const row = {}; // 遍历当前行的每个单元格 $(this).find('td').each(function(index) { let cellValue = $(this).text().trim(); // 如果是quantity列,自动转换成数字 if (headers[index] === 'quantity') { cellValue = parseInt(cellValue, 10); } // 对应表头属性赋值 row[headers[index]] = cellValue; }); cartData.push(row); }); console.log(cartData);
这种方式下,哪怕后续表格列的顺序调整,代码也不需要修改索引,直接就能适配,非常适合需求可能变动的场景。
内容的提问来源于stack exchange,提问作者Corvus
相关产品推荐
相关产品推荐

