【问题标题】:How to select a specific <span> with the same class names?如何选择具有相同类名的特定 <span>?
【发布时间】:2017-08-22 06:14:30
【问题描述】:

我正在尝试从这个 HTML 块中提取一些数据。

<div class="group-capitalization-content field-group-html-element">
    <h2><span>Capitalization</span></h2>
    <div  class="item">
        <div class="label-inline">Issued &amp; Outstanding:&nbsp;</div>
        <span class="number">242906121</span>
    </div >
    <div class="item">
        <div class="label-inline">Reserved for Issuance:&nbsp;</div>
        <span  class="number">51423534</span >
    </div>
</div>

我正在使用一个名为 cheerio 的 npm 模块从 HTML 中抓取数据。因此,我有以下代码来尝试获取"numbers"

 var data = $('.group-capitalization-content .item .number').text();

运行此代码会得到:24290612151423534,这是两个结果附加在一起。

如何在此处选择单个数字/将它们分开?

【问题讨论】:

  • 你可以使用一个选择器... [class^="test"]

标签: javascript jquery html node.js


【解决方案1】:

如果您只需要上面的示例,请使用.eq()

第一个项目的text()

$('.group-capitalization-content .item .number').eq(0).text();

...第二个是

$('.group-capitalization-content .item .number').eq(1).text();

如果您有更复杂的情况,并且需要将数据存储在数组中,以后我会使用 $.map() (@Sushanth's answer) - 可能更具体一点,以排除其他可能性页面内.numbers:

let data = $.map(
  $('.group-capitalization-content .item .number'), 
  function(e){ return $(e).text() }
);

【讨论】:

    【解决方案2】:

    您可以使用map 方法并定位.number 类,它会将内容吐出到一个数组中。

    let data = $.map($('.number'), function(elem) {
        return $(elem).text();
    });
    
    console.log(data);
    

    【讨论】:

      【解决方案3】:

      如果您不提前知道会有多少,您可以使用.each 循环浏览它们

      $('.group-capitalization-content .item .number').each(function() {
          $(this).text(); // Save this to a var or do something with it
      });
      

      【讨论】:

        【解决方案4】:

        each 函数如何检查您的每个结果,例如:

        $('.group-capitalization-content .item .number').each(function(index, element) {
            //your individual item code goes here
            console.log( index + ": " + $( this ).text() );
        });
        

        【讨论】:

          【解决方案5】:

          我通常会获取所有的 dom 元素,然后循环遍历它们以执行我必要的功能。这是一个工作小提琴。 https://jsfiddle.net/bbmtk7tm/

          var data = $('.group-capitalization-content .item .number');
          for(var i=0; i<data.length;i++)
          {
          console.log(data[i].innerHTML);
          }
          

          【讨论】:

            猜你喜欢
            • 2022-07-27
            • 1970-01-01
            • 2014-11-18
            • 1970-01-01
            • 2017-11-21
            • 1970-01-01
            • 2012-09-18
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多