node-html-parser icon indicating copy to clipboard operation
node-html-parser copied to clipboard

Add replaceWith method to text node

Open McFizh opened this issue 11 months ago • 1 comments

Would it be possible to have replaceWith method added to next nodes. Example use case:

Text node has content 'word1 word2 word3' and I would like to replace it with for example the following html:

'word1 <b>word2</b> word3'

This would be really easy to do with:

node.replaceWith('word1 <b>word2</b> word3');

McFizh avatar Mar 08 '24 08:03 McFizh

Yes, it should. I guess you want this do :

const root = parse('word1 word2 word3');
root.replaceWith('word1 <b>word2</b> word3');
root.toString().should.eql('word1 <b>word2</b> word3');

But it doen't, actually, the node wont change after calling replaceWith, and the method replaceWith return the node itself. you can try this:

const root = parse('<div>word1 word2 word3</div>');
const div = root.querySelector('div');
div.replaceWith('<div>word1 <b>word2</b> word3</div>');
root.toString().should.eql('<div>word1 <b>word2</b> word3</div>');

taoqf avatar Mar 29 '24 01:03 taoqf