jquery $ .each循环两次 - 在

时间:2016-08-01 19:00:49

标签: jquery web-scraping

这是我的html:

<form name="myDiv">
    <tr>
    <tr>
        <td class="myClass">First field1</td>
        <td class="myClass">Second field1</td>
        <td class="myClass">Third field1</td>
    </tr>
    </tr>
</form>
<form name="myDiv">
    <tr>
    <tr>
        <td class="myClass">First field2</td>
        <td class="myClass">Second field2</td>
        <td class="myClass">Third field2</td>
    </tr>
    </tr>
</form>
<form name="myDiv">
    <tr>
    <tr>
        <td class="myClass">First field3</td>
        <td class="myClass">Second field3</td>
        <td class="myClass">Third field3</td>
    </tr>
    </tr>
</form>

我试图抓住这个,但不知道该怎么做。

我在考虑jQuery和控制台输出,然后在获得数据后弄清楚如何到达外部文件。

我需要看起来像这样的数据(或类似的东西,我可以在后期导入到db):

First field1,Second field1,Third field1
First field2,Second field2,Third field2
First field3,Second field3,Third field3

我尝试的是:

<script type="text/javascript">
$(document).ready(function() {
    $.each( $('form[name=myDiv]'), function() {
        console.log('myDiv:');
        $.each( $(this).find('.myClass'), function(){
            console.log('td data:')
            console.log($('td').html())
        });
    });
});
</script>

我可以让它记录myDiv三次,但不知道如何遍历td后代。

2 个答案:

答案 0 :(得分:0)

使用$(this).text()获取每个td元素文字:

$(document).ready(function() {
    $('div[name=myDiv]').each(function() {
        console.log('myDiv:');
        $(this).find('.myClass').each(function() {
            console.log('td data:');
            console.log($(this).text());
        });
    });
});

答案 1 :(得分:0)

我已经编写了一些应该可行的代码,但也更新了HTML以使其更具语义性。 https://jsfiddle.net/Shuaso/234xtacy/1/

HTML:

<table name="myDiv">
  <tr>
    <td class="myClass">A</td>
    <td class="myClass">B</td>
    <td class="myClass">C</td>
  </tr>
  <tr>
    <td class="myClass">One</td>
    <td class="myClass">Two</td>
    <td class="myClass">Three</td>
  </tr>
  <tr>
    <td class="myClass">Do</td>
    <td class="myClass">Re</td>
    <td class="myClass">Mi</td>
  </tr>
</table>

<div id="output">

</div>

jQuery的:

  $("tr").each(function() {
  $("#output").append("<p>")
    $(this).find("td").each(function() {
      var content = $(this).text();
      $("#output").append(content + ", ")
    });
    $("#output").append("</p>")
  });

我在这里完成的是在表的每个表行上运行每个函数,然后运行嵌套的每个函数以将<td>的内容保存到名为&#34的变量中。内容&#34;,然后打印出&#34;内容&#34;变量到表格下面的div(&#34; #output&#34;)。在我按照您的要求运行每个<p>上的每个函数以及之后关闭<td>标记之前,我还打印了一个开始</p>标记,以便进行正确格式化。