我会承认,这个问题可能是你最糟糕的噩梦,但我迫切需要帮助。任何提示,技巧,提示或来源都将非常感激。
长话短说,我对jquery的一点知识都没有完成任务...... 我想要做的是捕获表中的数据点(见下文),将它们存储在一个数组中,以便我可以在页面加载期间稍后重新格式化该数据的表示。 问题是这是在当天写回来的(当你查看代码时你不会有多远),因此它没有任何对我有用的ID或类,这使得遍历DOM变得困难。
关于如何使用jquery定位/捕获数据点(通过数据点,我的意思是每个表格单元格中的实际数据)的任何想法?我已经尝试过使用.html(),. text()和.each(),有时这样可行,但有时它会返回我所针对的实际HTML ...我似乎无法找到获取方法只是有组织的数据。
非常感谢您提供的任何帮助。
//Removed code due to privacy issues
答案 0 :(得分:1)
也许这可以帮助您获得更清晰的数据。仅从所有td
单元格中获取文本内容。我还过滤了那些似乎有 data 的行(那些带有align="right"
的行)。
$('tr[align=right] td').contents().filter(function () {
return this.nodeType === Node.TEXT_NODE;
}).map(function () {
return this.nodeValue;
}).get();
输出:
["Name", "Type", "Views", "Visitors", "Clicks", "Clickrate", "▲", "Interval", "Conf", "Lift", "Clicks", "Clickrate", "▲", "Interval", "Conf", "Lift", "TOTAL", "632", "516", "8", "1.55%", "0.89%", "-", "-", "3", "0.5814%", "0.55%", "-", "-", "Versions", "Challengers", "301", "250", "2", "0.8%", "0.93%", "-", "-", "1", "0.4%", "0.66%", "-", "-", "Challengers", "331", "266", "6", "2.26%", "1.5%", "91%", "181.95%", "2", "0.7519%", "0.87%", "70%", "87.97%"]
答案 1 :(得分:1)
http://jsfiddle.net/y5r1kq0e/3/
var item = $('tbody')[0].children;
var get = function (item) {
var t = [];
$.each(item, function (i) {
var a = [];
$.each(item[i].children, function (child) {
a.push(this.innerText.trim())
})
t.push(a.join(' ').trim());
})
return t;
}
console.log(get(item))
为你得到一个这样的数组:
0: "Click1 Click2"
1: "Name Type Views Visitors Clicks Clickrate ▲ Interval Conf Lift Clicks Clickrate ▲ Interval Conf Lift"
2: "TOTAL 632 516 8 1.55% ±0.89% - - 3 0.5814% ±0.55% - -"
3: ""
4: "Versions"
5: "V1 Challengers 301 250 2 0.8% ±0.93% - - 1 0.4% ±0.66% - -"
6: "V2 Challengers 331 266 6 2.26% ±1.5% 91% 181.95% 2 0.7519% ±0.87% 70% 87.97%"
7: ""
答案 2 :(得分:0)
尝试将.each()与.text()结合使用。
var datapoints = []
$("td").each(function(){
var dataText = $(this).text();
datapoints.push(dataText);
});
虽然在这里测试后:http://jsfiddle.net/m33v82qf/看来你需要一些方法告诉.each()函数什么是存储在数组中的有效文本,什么不是。话虽如此,它可以很好地抓取页面上每个单元格的文本。