我正在尝试在Node.js服务器上进行一些元素操作,在该服务器上我需要获取HTML字符串,然后将某些节点替换为其他节点类型。当我使用DOM时,这种方法工作正常,但是一旦我没有DOM,它便无法正常工作。
在一个非常简单的示例中,我想做这样的事情……在其中找到所有div
元素并替换为spans
。
const html = '<html><div>hello</div><div>hello</div></html>';
const obj = $(html);
const filter = $(obj).find('div');
for (let j = filter.length; j >= 0; j--) {
$(filter[j]).replaceWith("<span>goodbye</span>");
}
console.log(obj);
我不能只对字符串进行查找和替换,因为我不希望在执行此操作之前,我要根据各种因素对所有元素进行过滤。
说节点不是元素是行不通的。有办法吗?我也尝试过使用JSDOM来做到这一点,但是再次,没有运气。
我希望此处的控制台显示带有两个spans
而不是两个divs
的HTML元素,为此我尝试添加一个jsfiddle,但是如果有人可以帮助的话,我在这里也遇到了一个不同的错误,赞赏。
http://jsfiddle.net/vkn285a1/1/
** 更新 **
从下面的答案中,我已经进行了更新,但是现在我得到了想要的结果,谢谢。。我不得不更改为使用SVG,这是我实际上正在解析的,并且可以正常工作。
const html = "<svg><g><text>hello</text><text>hello</text></g></svg>";
const obj = $.parseHTML(html);
const filter = $(obj).find("text");
for (let j = filter.length; j >= 0; j--) {
$(filter[j]).replaceWith("<span>goodbye</span>");
}