从字符串解析嵌套的html标签时出现问题

时间:2018-08-09 18:48:17

标签: javascript html parsing

我有这段代码将字符串解析为html并显示每个元素的文本。 除非我有嵌套标签(例如func ajaxLoad(var1 myVar: String) -> Observable<QueryResponse> { return Observable.create { observable in apollo.fetch(query: MyQuery()) { (result, _) in observable.onNext(result?.data?.myQuery) observable.onCompleted() } return Disposables.create() } } ),否则效果很好。在这种情况下,代码显示为<div><p>Element 1</p><p>Element 2</p></div>。 我该如何做才能使每个标签一个接一个? (在这里,我要先<p>Element 1</p><p>Element 2</p>,然后再Element 1

这是代码:

Element 2

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

听起来好像您想要一个递归函数,以打印自身或其子项(如果有子项)的textContent

const stringHtml = '<div><p>Element 1</p><p>Element 2</p></div><div><p>Element 3</p><p>Element 4</p></div>';
const doc = new DOMParser().parseFromString(stringHtml, 'text/html');

const showElms = parent => {
  const { children } = parent;
  if (children.length) Array.prototype.forEach.call(children, showElms);
  else console.log(parent.textContent);
}
showElms(doc.body);

那是假设您要迭代实际元素。如果要使用所有文本节点,请递归地迭代childNodes