【问题标题】:How to extract text inside nested HTML using JQuery?如何使用 JQuery 提取嵌套 HTML 中的文本?
【发布时间】:2014-05-03 20:16:31
【问题描述】:

我这里有 HTML 代码:

<div class="actResult" style="border: solid">
    <table>
        <tbody>
            <tr>
                <td>Order Number</td>
                <td>1</td>
            </tr>
            <tr>
                <td>Customer Number</td>
                <td>3</td>
            </tr>
            <tr>
                <td>Complaint Code</td>
                <td>b</td>
            </tr>
            <tr>
                <td>Receivable Receipt Number</td>
                <td>5</td>
            </tr>
            <tr>
                <td>Date Called</td>
                <td>2014-03-19</td>
            </tr>
            <tr>
                <td>Scheduled Day Of Checkup</td>
                <td>2014-03-19</td>
            </tr>
            <tr>
                <td>Scheduled Day Of Service</td>
                <td>2014-03-21</td>
            </tr>
            <tr>
                <td>Checkup Status</td>
                <td>Y</td>
            </tr>
            <tr>
                <td>Service Status</td>
                <td>N</td>
            </tr>
            <tr>
                <td>Technician Number Checkup</td>
                <td>3</td>
            </tr>
            <tr>
                <td>Technician Number Service</td>
                <td>1</td>
            </tr>
        </tbody>
    </table>
</div>

我想获取标签的值并将它们放入一个具有类似数组(“first td”=>“second td”)结构的数组中,因此对于这种情况,数组将是数组(“订单号" => "1", "客户编号" => "3", "投诉代码" => "b", ...) 等等。

之后,最终的数组将被发送到 PHP 代码中。

我一直在尝试使用 var html = $(this).filter(function( index ){ return $("td", this) }).filter(":odd").text(); 和其他各种 filter() 组合从 HTML 中提取一些值,但它似乎对我不起作用。

我该如何去做我想做的事?

【问题讨论】:

    标签: javascript php jquery html arrays


    【解决方案1】:

    jsFiddle Demo

    您将要为此使用.each 并遍历表中的行。对于每一行,将第一个单元格 (.eq(0)) 作为键,将第二个单元格 (.eq(1)) 作为值。将它们放在结果对象中。

    //object to hold resulting data
    var result = {};
    
    //iterate through rows
    $('.actResult tr').each(function(){
    
     //get collection of cells
     var $tds = $(this).find('td');
    
     //set the key in result to the first cell, and the value to the second cell
     result[$tds.eq(0).html()] = $tds.eq(1).text();
    });
    

    【讨论】:

    • 谢谢。我接受这个是因为我觉得它更直观,但两个答案都给出了我想要的。
    • 你能帮我更进一步吗?我正在尝试将数组现在传递到 PHP 代码中。我将编辑我的帖子以显示我用来传递和读取它的代码(我知道数组存在并且它似乎正确传递,但 $_GET 或 $_POST 没有显示任何内容)。
    • @markovchain - 你应该把它变成一个单独的问题。它将让您更快地获得帮助并保持此问题的原始上下文。
    【解决方案2】:

    您可以获取表格元素的rows 属性并根据单元格的值创建一个对象:

    var rows = document.querySelector('.actResult table').rows, 
        data = {}, c, l = rows.length, i = 0;
    
    for (; i < l; i++) {
        c = rows[i].cells;
        data[c[0].innerHTML] = c[1].innerHTML;
    }
    

    http://jsfiddle.net/tG8F6/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-11
      • 1970-01-01
      • 2021-05-15
      • 1970-01-01
      • 2020-01-03
      • 2010-10-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多