Find html tag in string javascript

I recently had a string with some content from a WYSIWYG editor (What you see is what you get). In there, I needed to find all the href elements.

But this specific approach can work for many things.

My approach consists of using the DOMParser, one could also use a regex approach to finding all the links in a text, but I needed an HTML output back again, so for me, this worked best.

Using JavaScript to get HTML elements from a string

To get started, let's first define our HTML. We will be using a variable, which you can consider came from our CMS.

const text = `<p>Some text</p><br /><a href="https://daily-dev-tips.com/">My website</a><hr /><a href="https://google.com">Another link</a>`;

As you can see, we have two links in there. Let's say we want to parse each link to add a target="_blank".

We can leverage the DOMParser to convert this string into a dom element.

let parser = new DOMParser();
const doc = parser.parseFromString(text, 'text/html');
console.log(doc);

This console.log will return the following object.

Find html tag in string javascript

As you can see, this is a full document.

To get all the links, we can use regular queries on this doc const.

links = doc.getElementsByTagName('a');
console.log(links);

// HTMLCollection(2) [a, a]

Nice, we got our two links. We can loop over these two links and manipulate them. This will be adjusted in our doc variable.

[...links].forEach((link) => {
  link.setAttribute('target', '_blank');
});

Here we loop over the getElementsByTagName results, and set the target to a blank page.

Now, if we would log the current status:

console.log(doc);

We get the following result. You can see the links now have a target blank.

Find html tag in string javascript

Using the output of a JavaScript DOMParser

Let's also take some time to output the changes to see them in the HTML action.

Let's add two divs to our HTML.

<div id="original"></div>
<div id="output"></div>

First, we have our basic text variable.

const text = `<p>Some text</p><br /><a href="https://daily-dev-tips.com/">My website</a><hr /><a href="https://google.com">Another link</a>`;

Next, we will get the two div elements.

const original = document.getElementById('original');
const output = document.getElementById('output');

For the original one, we can immediately add the output as-is.

original.innerHTML = text;

And for the output one, we do our modifications as seen above.

let parser = new DOMParser();
const doc = parser.parseFromString(text, 'text/html');

links = doc.getElementsByTagName('a');
console.log(links);
[...links].forEach((link) => {
  link.setAttribute('target', '_blank');
});

output.innerHTML = doc.documentElement.innerHTML;

That's it. We now have two divs, one with links that open in the same tab and open in a blank tab.

Try it out using the following Codepen.

See the Pen JavaScript get HTML elements from a string by Chris Bongers (@rebelchris) on CodePen.

Thank you for reading, and let's connect!

Thank you for reading my blog. Feel free to subscribe to my email newsletter and connect on Facebook or Twitter

How do I check if a string contains HTML?

test. bind(/(<([^>]+)>)/i); It will basically return true for strings containing a < followed by ANYTHING followed by > .

How do you display HTML tags in JavaScript?

JavaScript can "display" data in different ways:.
Writing into an HTML element, using innerHTML ..
Writing into the HTML output using document.write() ..
Writing into an alert box, using window.alert() ..
Writing into the browser console, using console.log() ..

How do I find tags in HTML?

Right-click while on your webpage in Google Chrome. Click 'Inspect' You'll see the HTML code in a box at the side or bottom of your page. Use Ctrl + F to find particular tags or elements.

What is string HTML?

A string can be any text inside double or single quotes: let carName1 = "Volvo XC60"; let carName2 = 'Volvo XC60'; String indexes are zero-based: The first character is in position 0, the second in 1, and so on.