javascript - 在javascript中循环遍历表函数
问题描述
我有一个基于 Symfony 框架的应用程序,页面是用 HTML 构建的,我有多个表,每行都有不同的行长度,我需要遍历所有数据。
我的桌子有这种形式:
<form onsubmit="runScript()">
<div id="{{ tblName }} ">
<table>
<thead>
<tr>
<th>col1Name</th>
<th>col2Name</th>
</tr>
</thead>
<tbody>
<tr>
<td><input type=text /></td>
<td><input type=date /></td>
</tr>
</tbody>
</table>
<button type="submit></button>
</div>
</form>
runScript() 函数获取表名并将其发送到我制作的 javascript 函数中,用于旋转单元格并将它们推送到数组中:
function getTableData(tblName){
let div = $(tblName);
let table = $(div).find("tbody");
let tableData = [];
let rowlength = table.rows.length;
for(let i=0; i<rowlength; i+=1){
let row = table.rows[i];
let cellLength = row.cells.length;
for(let y=0; y<cellLength; y+=1){
let cell = row.cells[y];
tableData.push(cell);
}
}
alert(tableData);
}
**更新问题:运行 for 循环时,我不断收到找不到未定义的“长度”的错误。
有没有更好的方法来实现这个功能?我需要循环遍历大约 19 个表,因此我宁愿不必为每个表单单独创建一个表。
谢谢!
谢谢@fejanto,我让它工作了,这是更新的javascript:
function getTableData(tblName){
let div = $(tblName);
// By doing '[0]' on a jQuery object you get the wrapped HTML element
let table = $(div).find("tbody")[0];
console.log(table);
let tableData = [];
let rowlength = table.rows.length;
for(let i=0; i<rowlength; i+=1){
let row = table.rows[i];
let cellLength = row.cells.length;
for(let y=0; y<cellLength; y+=1){
let cell = row.cells[y];
tableData.push(cell);
}
}
console.log(tableData);
}
和 runScript() 函数:
function runScript(){
let name = $('#tablename').val();
alert(name);
getTableData(name);
}
解决方案
.innerHTML
不应该在那里,您需要 HTML 集合对象,而不是 html 或 jQuery 对象。这就是为什么您需要从 jQuery 对象中提取 html 集合的原因。另外,也许您应该使用console.log
而不是alert
检查变量的内容,因为alert
不会对对象进行字符串化。
function getTableData(tblName){
let div = $(tblName);
// By doing '[0]' on a jQuery object you get the wrapped HTML element
let table = $(div).find("tbody")[0];
console.log(table);
let tableData = [];
let rowlength = table.rows.length;
for(let i=0; i<rowlength; i+=1){
let row = table.rows[i];
let cellLength = row.cells.length;
for(let y=0; y<cellLength; y+=1){
let cell = row.cells[y];
tableData.push(cell);
}
}
console.log(tableData);
}
推荐阅读
- flutter - `didChangeDependencies` 中的提供者不更新数据
- masstransit - 配置更多时,MassTransit 仅批处理 10
- python - python中套接字编程期间的错误
- scala - 为什么 super 的这种用法会产生这个结果
- node.js - 如何在有多个数据库的项目中使用 $lookup?
- javascript - IOS 上的 Angular 下载 PDF 大多在同一选项卡中打开
- single-sign-on - 跨领域的 Keycloak 令牌交换
- php - php 审查字符串,更新和回显更新版本
- python - 论证一定是这样的,但这不对吗?
- node.js - 使用 n 更新到稳定版本的 nodejs