【问题标题】:get innerHTML from DOM using cheerio使用 Cheerio 从 DOM 获取 innerHTML
【发布时间】:2016-08-18 18:55:00
【问题描述】:

此 Meteor 服务器代码尝试使用 cheerio 包从 html 字符串中提取 innerHTML,但错误提示 elements 没有方法“大小”

我做错了什么以及如何解决?谢谢

这里是html;

<span class='errorMsg'>some text </span>



message: (html, typeMsg) => {
      let $ = cheerio.load(html);
      const selection = 'span.' + typeMsg;
      const elements = $(selection);
      return elements.size() > 0 ? elements.get(0).innerHTML.trim() : '';
    }

【问题讨论】:

  • elements.get(0).text().trim() 怎么样?
  • 或者:elements.get(0).html().trim()?
  • @EliezerSteinbock 给出“TypeError: Object [object Object] has no method 'text'”

标签: html meteor cheerio


【解决方案1】:
var cheerio = require('cheerio');
var $ = cheerio.load('<b>hello</b> world');

// innerHTML
$('body').html()
// <b>hello</b> world

// outerHTML
$.html($('body'))
// <body><b>hello</b> world</body>

// innerText
$('body').text()
// hello world

文档:https://api.jquery.com/html/#html1

【讨论】:

    【解决方案2】:

    经过几次尝试和错误并试图理解docs,这让云受益于更多的解释。

    选项 1

      const element = $(selection).eq(0);
      return element ? element.text().trim() : '';
    

    选项 2

      const element = $(selection).get([0]);
      return element ? element.children[0].data.trim() : '';
    

    在这种情况下我使用了选项 1。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-02-16
      • 2020-08-05
      • 1970-01-01
      • 1970-01-01
      • 2023-03-03
      • 2020-09-27
      • 2017-04-21
      • 1970-01-01
      相关资源
      最近更新 更多