我有一个包含多个<p>标记的html字符串。每个<p>标记后面都有一个单词及其定义。

let data = "<p><strong>Word 1:</strong> Definition of word 1</p><p><strong>Word 2:</strong> Definition of word 2</p>"


我的目标是将此html字符串转换为如下所示的对象数组:

[
 {"word": "Word 1", "definition": "Definition of word 1"},
 {"word": "Word 2", "definition": "Definition of word 2"}
]


我这样做如下:

var parser = new DOMParser();
  var parsedHtml    = parser.parseFromString(data, "text/html");
  let pTags = parsedHtml.getElementsByTagName("p");
  let vocab = []
  pTags.forEach(function(item){
    // This is where I need help to split and convert item into object
    vocab.push(item.innerHTML)
  });


您可以在上面的代码中看到注释,这就是我遇到的问题。任何帮助表示赞赏。

最佳答案

使用textContent从元素中获取文本。这个词在strong子元素中,定义是文本的其余部分。

var parser = new DomParser();
  var parsedHtml    = parser.parseFromString(data, "text/html");
  let pTags = parsedHtml.getElementsByTagName("p");
  let vocab = []
  pTags.forEach(function(item){
    let word = item.getElementsByTagName("strong")[0].textContent.trim();
    let allText = item.textContent;
    let definition = allText.replace(word, "").trim();
    vocab.push({word: word, definition: definition})
  });

关于javascript - 将HTML字符串解析为数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53883098/

10-12 03:19