我有这段代码将字符串解析为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
感谢您的帮助
答案 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
。