包装当前在字符串中的HTML标记?

时间:2019-07-12 12:42:58

标签: javascript

我将HTML作为字符串,例如:

<p>some text</p><p>some more text</p><table><th>....</table>

我希望将表格包装在div标签中-表格可以在任何地方。

我已经考虑过使用replace,但是我必须同时替换开始表标签和结束表标签。

有没有办法包装表格元素?

仅适用于Vanilla JS。

1 个答案:

答案 0 :(得分:1)

如果在浏览器中执行此操作,则可以使用DOM方法。 DOM是比regex更好的html解析器

const str = `<p>some text</p><p>some more text</p><table><tr><th>Test</th></tr></table>`

const tmp = document.createElement('div')
tmp.innerHTML = str;

Array.from(tmp.querySelectorAll('table')).forEach(function(table){
       const div = document.createElement('div');
       table.parentNode.insertBefore(div, table);
       div.appendChild(table);
});

const modifiedStr = tmp.innerHTML;
console.log(modifiedStr );

document.body.innerHTML = modifiedStr;
div > table{ color: red}