【问题标题】:Uncaught TypeError: $(...).text is not a function未捕获的类型错误:$(...).text 不是函数
【发布时间】:2017-10-13 18:05:51
【问题描述】:

我有一个非常简单的HTML page,我尝试使用cheerio 执行一个简单的CSS 选择器。

const $ = cheerio.load(html);
console.log($(`body > div > div.-layout-h > div.task-tests--label`).text());

结果:
Input:Output: Expected Output:Console Output:

我的目标是获取第一个元素并打印出它的内部文本。我还尝试使用each() 迭代选定的元素:

const $ = cheerio.load(html);
$(`body > div > div.-layout-h > div.task-tests--label`).each((i, e) => {
    console.log(`${i} = ${e.text()}`);
});  

结果:

0 = [object Object]
1 = [object Object]
2 = [object Object]
3 = [object Object]

如何打印每个选定项目的内部文本?

【问题讨论】:

  • jQuery 不包含在相关页面中,因此 $() 不是 jQuery,它是控制台的内置便利 $() 函数,它返回一个执行 的对象没有.text() 方法。关于为什么你可能会打印所有四个元素,那是因为选择器匹配它们。
  • 添加
  • @YasharAliabasi - 至少在 URL 的开头有 //
  • @nnnnnn 知道了,那么如何在 Chrome 的开发工具中获得对象的文本?
  • @Amadan - 如果$ 是控制台的内置函数,它只会返回一条记录。 (它基本上是querySelector() 的快捷方式,不是吗,$$()querySelectorAll() 的快捷方式?)但是是的,$(selector).textContent 应该可以工作。

标签: javascript html node.js cheerio


【解决方案1】:

如果你想显示点击的元素文本,你应该使用this 来理解这个例子

$('#change').click(function () {
$(this).text('this text changed');
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button id="change">hello world</button>

【讨论】:

    【解决方案2】:

    将以下标签添加到您的头部。

    <script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
    

    你也可以使用

    console.log($(`.task-tests--label`).text());
    

    让您的生活更轻松。上面的代码将选择所有具有类“task-tests--label”的标签并控制台输出它们各自的文本。

    【讨论】:

      猜你喜欢
      • 2020-07-25
      • 1970-01-01
      • 1970-01-01
      • 2022-11-19
      • 1970-01-01
      • 2019-06-06
      • 2019-05-24
      • 2021-12-15
      • 2019-10-26
      相关资源
      最近更新 更多