javascript - 使用循环并查找 html 元素的值 JavaScript

标签 javascript jquery

我想使用 vanilla js 循环遍历一串 html 文本并获取其值。使用 jQuery 我可以做这样的事情

var str1="<div><h2>This is a heading1</h2><h2>This is a heading2</h2></div>";
$.each($(str1).find('h2'), function(index, value) {
/// console.log($(value).text());
});

使用 $(str) 将其转换为我理解的 html 字符串,然后我们可以使用 .text() 来获取元素 (h2) 的值。 但我想在我的后端而不是客户端的节点应用程序中执行此操作,因为它会更有效率(?)而且不依赖 jQuery 也很好.

某些情况下,我正在开发一个博客应用程序。我想要在对象服务器端创建一个目录。

最佳答案

这是使用 .innerHTML 的另一种方式,但使用内置的 iterable protocol

这是我们需要的操作、它们的类型以及指向该函数文档的链接

  • 从文本创建 HTML 元素
    String -> HTMLElement – 由 set Element#innerHTML 提供

  • 获取HTML元素的文本内容
    HTMLElement -> String – 由 get Element#innerHTML 提供

  • 查找与查询选择器匹配的节点
    (HTMLElement, String) -> NodeList – 由 Element#querySelectorAll 提供

  • 将节点列表转换为文本列表
    (NodeList, HTMLElement -> String) -> [String] – 由 Array.from 提供

// html2elem :: String -> HTMLElement
const html2elem = html =>
  {
    const elem = document.createElement ('div')
    elem.innerHTML = html
    return elem.childNodes[0]
  }

// findText :: (String, String) -> [String]
const findText = (html, selector) =>
  Array.from (html2elem(html).querySelectorAll(selector), e => e.textContent)

// str :: String  
const str =
  "<div><h1>MAIN HEADING</h1><h2>This is a heading1</h2><h2>This is a heading2</h2></div>";

console.log (findText (str, 'h2'))
// [
//   "This is a heading1",
//   "This is a heading2"
// ]
// :: [String]

console.log (findText (str, 'h1'))
// [
//   "MAIN HEADING"
// ]
// :: [String]

关于javascript - 使用循环并查找 html 元素的值 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48069314/

相关文章:

Javascript异步获取循环内的请求

javascript - 如何在 React 中的表单提交上使用带有 fetch API 的 setState ?

javascript - jQuery & replaceWith() : reloading page every other time

javascript - 在数据库中同时搜索多个表

javascript - .ajax jquery 方法的正确使用?

javascript - 只需通过 Jquery 按 Enter 键即可将焦点从一个控件移动到另一个控件

javascript - 为什么在调用缺少的函数时会捕获错误,而不是在错误的语句上捕获错误?

javascript - 为什么 m.module 不会导致我的视​​图在 Mithril 中重新渲染?

javascript - 如何在 WordPress 中将 CSS3 代码转换为 jQuery

javascript - jQuery:添加类并从所有 sibling 中删除