如何使用jQuery的每个函数从html表中提取数据
how to extract data from html table using jQuery each function
我需要从html表中提取数据以创建JSON数组。
这是HTML表格的结构,
<table class="tableClass">
<thead class="tableHeaderClass" >
<tr>
<th>header_column1</th>
<th>header_column2</th>
<th>header_column3</th>
</tr>
</thead>
<tbody class="tableBodyClass">
<tr>
<td>row1_column1</td>
<td>row1_column2</td>
<td>row1_column3</td>
</tr>
<tr>
<td>row2_column1</td>
<td>row2_column2</td>
<td>row2_column3</td>
</tr>
</tbody>
</table>
在我的JavaScript函数中,我这样做
function() {
var json = {
header_column1 : '',
header_column2 : '',
header_column3 : ''
};
var data = [];
$('tableClass').find('tbody').children('tr').each(function() {
var $tds = $(this).find('td');
json.header_column1 = $tds.eq(0).text();
json.header_column2 = $tds.eq(1).text();
json.header_column3 = $tds.eq(2).text();
data.push(json);
});
return data;
}
当我打印我的数组,但我只得到' row2_columnn1, row2_column2, row2_column3'.
不能锻炼我做错了什么/错过了什么。如果你能帮我解决这个问题就太好了。
$('tableClass')
应该$('.tableClass')
在调试jQuery时,总是使你的选择器成为初始怀疑对象。在继续链之前检查他们是否找到了元素。因此:
alert($('tableClass').length)
…会给你0
(旁注:
$('tableClass').find('tbody').children('tr')
可以缩写为
$('tableClass').find('> tbody > tr')
您使用了错误的选择器,$('tableClass')
将尝试选择一个名称为tableClass的元素,即:<tableClass></tableClass>
你可以用这个代替:
$('.tableClass tbody tr')
因为你使用的是一个对象数组中的每个元素都会引用同一个对象
//Clones the json object, might not be the most efficient method
var newHeader = JSON.stringify(JSON.parse(json));
//Or just create a new object each iteration
var newHeader = {};
newHeader.header_column1 = $tds.eq(0).text();
newHeader.header_column2 = $tds.eq(1).text();
newHeader.header_column3 = $tds.eq(2).text();
data.push(newHeader);
请参阅有关对象克隆的问题
除了选择器之外,对象语法无效,它应该是:
var json = {
header_column1: '',
header_column2: '',
header_column3:''
}
同样,您对同一个对象进行了两次更新和推入,因此您最终会对数组上的最后一次更新有两个引用。本质上只是获得' row2_columnn1, row2_column2, row2_column3'两次在数组上,而不是' row1_columnn1, row1_column2, row1_column3'和' row2_columnn1, row2_column2, row2_column3'
把var json声明放在最上面,只在'each'中做:
var json = {}
json.header_column1 = $tds.eq(0).text();
json.header_column2 = $tds.eq(1).text();
json.header_column3 = $tds.eq(2).text();
相关文章:
- HTML页面如何提取通过表单传递的参数
- 使用javascript从HTML网页中提取图像url
- 如何从HTML下拉菜单中提取值
- 如何每秒从一个变量中提取一定次数的javascript/html
- 更换163;使用javascript从html文本区域中提取字符
- 正则表达式,用于从html格式的字符串中提取文本
- 从HTML代码中提取数据
- 使用JavaScript或AJAX从HTML表单中提取数据,然后将其传递给PHP
- 如何在HTML源代码中提取javascript变量
- 使用'从HTML表中提取行的内容<tr onclick=alertContents()>'
- 从html标记格式的字符串中提取键值对
- jQuery-数据提取问题(html遍历)
- 用于提取 HTML 标记子元素的正则表达式
- 从导入的 HTML/JS 文件中提取变量
- 使用JavaScript从HTML字符串中提取文本
- 如何将jquery ajax数据提取为html
- 如何从html中提取javascript
- 从html文件中的js中提取链接
- 从Html中提取特定值
- Angular将所有头文件html提取到一个文件中