使用HTML结构的要约列表(HTML表之外)

时间:2019-03-30 18:27:06

标签: javascript jquery html

我有以下HTML(不是我自己的HTML,我正在抓取)。

逻辑是,每个包含 strong 元素的元素都是一个类别。 属于该类别的产品是所有接下来的带有某些文本的tr-elements。只要没有tr包含另一个强元素,就可以采用“下一个”项,因为这将是一个新类别。

var offers$ = $('#MInhalt td'),
  offers = {};

offers$.each((ignore, el) => {
  var this$ = $(el),
    isCategory = !!this$.find('strong').length,
    thisCategoryName = this$.text().replace(/[^a-zA-Z\d]/g, '_'), // to make sure no special chars
    categoryItems$ = this$.nextUntil('<strong>').filter(function(itm$) {return itm$.find('')});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="MInhalt" class="linie">
  <table width="100%">
    <tbody>
      <tr>
        <td><strong>Drinks</strong></td>
        <td>&nbsp;</td>
      </tr>
      <tr>
        <td>Eistee mit Minze, Zitrone und Ingwer 0,2l</td>
        <td>2,00</td>
      </tr>
      <tr>
        <td>Frisch entsafteter Möhren-Apfel-Ingwersaft mit Traubenkernöl 0,2l</td>
        <td>2,50</td>
      </tr>
      <tr>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
      </tr>
      <tr>
        <td><strong>Suppen</strong></td>
        <td>&nbsp;</td>
      </tr>
      <tr>
        <td>Kürbis-Ingwersuppe mit Croutons</td>
        <td>4,20</td>
      </tr>
      <tr>
        <td>Gemüseeintopf mit Rindfleisch</td>
        <td>4,20</td>
      </tr>
      <tr>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
      </tr>
      <tr>
        <td><strong>Salate</strong></td>
        <td>&nbsp;</td>
      </tr>
      <tr>
        <td>Gemischter Salat (klein/mittel/groß)</td>
        <td>2,50/3,80/5,90</td>
      </tr>
      <tr>
        <td>Großer Salat mit gebr. Putenbruststreifen, Champignons und kleinen Kartoffeln in Chili-Sahnesauce (mit Balsamico-Kirschdressing)</td>
        <td>8,50</td>
      </tr>
    </tbody>
  </table>
</div>

{
  "Drinks": [{
      "name": "Eistee mit Minze, Zitrone und Ingwer 0,2l",
      "price": "2,00"
    },
    {
      "name": "Frisch entsafteter Möhren-Apfel-Ingwersaft mit Traubenkernöl 0,2l",
      "price": "2,50"
    }
  ],
  "Suppen": [{
      "name": "Kürbis-Ingwersuppe mit Croutons",
      "price": "4,20"
    },
    {
      "name": "Gemüseeintopf mit Rindfleisch",
      "price": "4,20"
    }
  ],
  "Salate": [{
      "name": "Gemischter Salat (klein/mittel/groß)",
      "price": "2,50/3,80/5,90"
    },
    {
      "name": "Großer Salat mit gebr. Putenbruststreifen, Champignons und kleinen Kartoffeln in Chili-Sahnesauce (mit Balsamico-Kirschdressing)",
      "price": "8,50"
    }
  ]
}

我的方法是以某种方式使用jQuery.nextUntil(),但是我不知道如何正确地做到这一点,这就是:

offers$ = $('#MInhalt strong');

  offers$.each((ignore, el) => {
    const thisCategoryName = el.replace(/[^a-zA-Z\d]/g, '_'),
    categoryItems = 
  });

有人可以在这里帮忙吗?

0 个答案:

没有答案