Разбор HTML с использованием jQuery - PullRequest
3 голосов
/ 12 сентября 2011

Я новичок в изучении Jquery. Я хочу разобрать строку HTML:

<tr>
    <td class="first"><b><a href="/q?s=TOM">TOM</a></b></td>
    <td class="second name">Tom is a good boy</td>
    <td class="last_trade"><b><span id="yfs_l10_TOM">5.45</span></b> <nobr><span id="yfs_t10_TOM">Sep 9</span></nobr></td>
    <td><span id="yfs_c10_TOM"><width="10" height="14" border="0" src="abcdefgh" alt="Down"> <b style="color:#cc0000;">14.49</b></span> <span id="yfs_p20_TOM"><b style="color:#cc0000;"> (72.67%)</b></span></td>
    <td><span id="yfs_v00_TOM">4,100</span></td>
    <td class="last"><a href="/q/bc?s=TOM">Chart</a>, <a href="/q?s=TOM">More</a></td>
</tr>

Приведенная выше строка повторяется 10 раз с различными значениями в HTML Я хочу получить значения: TOM, 5,45, 14,49, 72,67%, 4100 для всех 10 повторений похожих строк в HTML.

Ответы [ 4 ]

4 голосов
/ 12 сентября 2011

Вот рабочий пример , который я создал, чтобы помочь вам использовать нужные вам селекторы jQuery.Код jQuery повторяется каждый tr:

var results = [];

$("table tr").each(function(i) {
    results[i] = {
        firstName: $("td.first", this).text(),
        lastTrade: $("td.last_trade span:first", this).text(),
        down: $("td.last_trade", this).next("td").find("span:first").text(),
        downPercentage: $("td.last_trade", this).next("td").find("span:last").text(),
        someOtherNumber: $("td.last", this).prev("td").text() 
    };
});

Вы должны изменить имена свойств и использовать results в зависимости от ваших потребностей.

0 голосов
/ 12 сентября 2011

на основе обновленного вопроса ...

Я бы лично создал объект для хранения данных в каждой строке:

    pupil = function () {
        this.name;
        this.score;
        this.dob;
        //..etc
    }

затем заполните массив, как только страница будет загружена, например ::1006

    $(function () {
        var pupils = [];
        $('table').find('tr').each(function (x, d) {
            temp = new pupil();
            temp.name = $(d).find('.first').find('a').html();
            //...etc...
        });
    });
0 голосов
/ 12 сентября 2011

Вы можете просмотреть строки таблицы с помощью каждая и получить значения по классам.

$("#table1 tr").each(function() 
{
    $this = $(this);
    var firstName = $this.find(".first").text();
    var secondName = $this.find(".second").text(); 
    // ...
});
0 голосов
/ 12 сентября 2011

Используйте регулярные выражения javascript (AKA Regexp):

var data = "TOMTom is a good boy5.45 Sep 9 14.49 (72.67%)4,100Chart, More";
var regex = /^(.+)Tom is a good boy([0-9\.]+) [^\s]+ [0-9]+ ([0-9\.]+) \(([0-9,]+)%\)([0-9\.]+)/
var extracted_data = data.match(regex);
alert(extracted_data[0]);
alert(extracted_data[1]);
alert(extracted_data[2]);
alert(extracted_data[3]);
...