2014-10-02 25 views
0

我會承認,這個問題可能是你最糟糕的噩夢,但我非常需要幫助。任何提示,技巧,提示或來源將不勝感激。沒有ID的遍歷表,存儲在數組中供以後使用

長話短說,我對jQuery的小知識並沒有完成任何事情...... 我想要做的是捕獲表內的數據點(見下文),將它們存儲在一個數組中我可以稍後在頁面加載期間重新格式化數據的表示。 問題是,這是在當天寫回來的(當你看代碼的時候你沒有多久),所以它沒有任何對我有用的ID或類,這使得難以遍歷DOM。

關於如何使用jquery來定位/捕獲數據點(通過數據點,我指的是每個表格單元格中的實際數據)的任何想法?我嘗試過使用.html(),.text()和.each(),有時候可以,但有時它會返回我所針對的實際HTML ...我似乎無法找到一種方法來獲取只是以有組織的方式提供數據。

任何幫助你可以提供將不勝感激。

//Removed code due to privacy issues 

回答

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: "" 
+0

真棒!這看起來正是我想要的。 – user2828701 2014-10-02 20:47:03

+0

謝謝,我剛剛注意到,函數內的'a = []'應該是'var a = []'.. – jaakkoj 2014-10-02 20:54:04

0

嘗試使用.each()與.text()結合使用。

var datapoints = [] 
    $("td").each(function(){ 
    var dataText = $(this).text(); 
     datapoints.push(dataText); 
    }); 

雖然這裏測試之後:http://jsfiddle.net/m33v82qf/看來你需要一些方法來告訴。每()函數什麼是陣列中存儲有效的文本,哪些不是。這就是說,它可以很好地抓取頁面上每個單元格的文本。

+0

這一定會幫助!感謝您指點我正確的方向。我會玩弄它,看看我可以如何進行下一步。謝謝! – user2828701 2014-10-02 17:51:00

+0

沒問題。如果您可以調整代碼並將您的類添加到要從中提取數據的單元格中,那麼您絕對可以縮小搜索條件。 – 2014-10-02 17:53:55

1

也許這可以幫助您獲得更清潔的數據。只從所有td單元格中獲取文本內容。我還過濾了那些似乎有數據(與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%"]