How to Convert String to HTML in JavaScript

Anika Tabassum Era Feb 02, 2024
  1. Use the innerHTML Property to Convert String to HTML Object in JavaScript
  2. Use the DOMParser() Interface to Convert String to HTML Object in JavaScript
  3. Use jQuery to Ensure the Type of the String Passed in HTML
  4. Use createRange and createContextualFragment to Convert String to HTML Object in JavaScript
  5. Conclusion
How to Convert String to HTML in JavaScript

JavaScript, a versatile and widely used programming language, often encounters scenarios where developers need to convert strings into HTML elements for dynamic web content. This can be achieved through several methods, each with its advantages and use cases.

In this comprehensive guide, we will explore different methods for converting strings to HTML in JavaScript, accompanied by detailed explanations and example code for each method.

Use the innerHTML Property to Convert String to HTML Object in JavaScript

The innerHTML property is a crucial aspect of the DOM that enables developers to access and modify the HTML content within an element. It provides a direct and convenient way to work with the markup of an element, allowing for dynamic updates and content manipulation.

To get the HTML content:

element.innerHTML

To set the HTML content:

element.innerHTML = newContent;

Here, element refers to the DOM element you want to access or modify, and newContent is the HTML content you want to assign to the element.

The innerHTML property can be utilized to convert a string into an HTML object by setting it with the desired string content. This operation effectively replaces the existing content of an element with the provided markup.

In the example below, we will have a function stringToHTML that will take the raw string as its parameter. After that, we will create a div, and we wish to pass the string given inside that.

We could also pass it to the HTML body instead, but to be neat, we expect a div element.

Next, the newly created div will be associated with an instance dom (supposedly). So, for dom, we will set the innerHTML property and then pass the string.

The return will be the dom instance for the function stringToHTML we created. Let’s check the code lines.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script src="abc.js"></script>
</body>
</html>
var stringToHTML = function(str) {
  var dom = document.createElement('div');
  dom.innerHTML = str;
  return dom;
};
console.log(stringToHTML('<h1>Hello world!</h1><p>How are you today?</p>'));

Output:

Use innerHTML Property to Convert String to HTML Object

If you run the code, it will not display anything on the webpage because you’re logging the resulting div element to the console. If you want to display it on the webpage, you’ll need to append it to the DOM.

For example, you could add the following code at the end of your abc.js file:

var htmlElement = stringToHTML('<h1>Hello world!</h1><p>How are you today?</p>');
document.body.appendChild(htmlElement);

This will append the newly created div element (containing the HTML content) to the body of your webpage. When you load the HTML file in a browser, it will display the heading and paragraph as specified in the stringToHTML call.

Output:

innerHTML - display webpage

Use the DOMParser() Interface to Convert String to HTML Object in JavaScript

The DOMParser() interface is a powerful tool that allows JavaScript to parse XML or HTML source code from a string into a DOM Document. This provides developers with the capability to dynamically generate and manipulate content before appending it to the DOM.

Syntax:

const parser = new DOMParser();
const parsedDocument = parser.parseFromString(string, contentType);

Here, parser is an instance of the DOMParser() interface, string is the XML or HTML source code provided as a string, and contentType is a string specifying the type of content being parsed ('text/xml' for XML and 'text/html' for HTML).

The DOMParser() interface facilitates the conversion of a string into an HTML object. It accomplishes this through the parseFromString() method.

The DOMParser() is often ignored or can be used along with conditions. If the prior way of handling the issues gets obliterated, then this segment of code might fire to back up the process.

So, in the below example, we will take an instance of the DOMParser() interface, and the instance will be triggered by parseFromString(). The parameters will be the string and the type in HTML it is supposed to represent.

We will then pass the instance doc to the HTML body.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script src="2.js"></script>
</body>
</html>
var stringToHTML = function(str) {
  var parser = new DOMParser();
  var doc = parser.parseFromString(str, 'text/html');
  return doc.body;
};
console.log(stringToHTML('<h1>Hello world!</h1><p>I am fine Thank you! ^_^</p>'));

The HTML document has a script tag that references an external JavaScript file named 2.js.

The JavaScript file defined a function called stringToHTML, which takes a string str as an argument. This function uses the DOMParser interface to parse the provided string as HTML.

Output:

Use DOMParser() Interface to Convert String to HTML Object

When you run the above code, it will log the body element to the console. If you want to actually display the HTML content on your webpage, you’ll need to append it to the DOM, like below:

var htmlElement = stringToHTML('<h1>Hello world!</h1><p>I am fine Thank you! ^_^</p>');
document.body.appendChild(htmlElement);

This will append the body element (which contains the parsed HTML content) to the body of your webpage.

Output:

DOMParser - display webpage

Use jQuery to Ensure the Type of the String Passed in HTML

In this section, we will determine the overall task. We will check if the HTML object was made, the type, etc.

If we can use jQuery to pass a string, it goes to HTML in an object form. Though the content hasn’t been previewed, it has created its space in the HTML body (not permanent).

Now, let’s jump to the code block.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script src="https://code.jquery.com/jquery-3.6.0.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>
    <script src="3.js"></script>
    <script>
        var stringToHTML = function (str) {
        var d = $(str);
        return d;
    }
    console.log(stringToHTML('<h1>Hello world!</h1><p>How are you today?</p>'));
    </script>
</body>
</html>

Output:

Use jQuery to Ensure the Type of the String Passed in HTML

In the embedded script, a function stringToHTML is defined. This function takes a string str as an argument.

Inside the function, the string is passed to the jQuery function $(), which creates a new jQuery object d containing the HTML elements described in the string. Finally, the function returns this jQuery object.

In the example provided, stringToHTML is called with an HTML string containing an h1 heading and a p element. The result is logged into the console. Since stringToHTML returns a jQuery object containing the parsed HTML, you will see a jQuery-wrapped version of the HTML elements in the console output.

It’s important to note that using jQuery in this way provides a convenient method for parsing and manipulating HTML strings. The $(str) syntax creates a jQuery object from the provided string, which can then be used to perform various jQuery operations on the HTML elements.

Use createRange and createContextualFragment to Convert String to HTML Object in JavaScript

The createRange method is part of the Document interface in JavaScript. It allows developers to create a new Range object.

A Range object represents a fragment of the document, such as selecting a portion of text or a specific element.

Syntax:

const range = document.createRange();

Here, range is the variable that will hold the newly created Range object.

The createContextualFragment method is also part of the Document interface. It creates a new DocumentFragment from a string of HTML. A DocumentFragment is a lightweight, in-memory representation of a document.

Syntax:

const fragment = range.createContextualFragment(string);

Here, range is an instance of the Range object, and string is the HTML content provided as a string that you want to parse.

Below is a complete code example that demonstrates how to use createRange and createContextualFragment to convert a string into an HTML object in JavaScript.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>String to HTML Example</title>
</head>
<body>
    <div id="output"></div>

    <script>
        // Function to convert a string to an HTML object
        const stringToHTML = function (str) {
            const range = document.createRange();
            const fragment = range.createContextualFragment(str);
            return fragment;
        }

        // Example usage
        const htmlString = '<h1>Hello world!</h1><p>How are you today?</p>';
        const htmlObject = stringToHTML(htmlString);

        // Append the HTML object to the output div
        const outputDiv = document.getElementById('output');
        outputDiv.appendChild(htmlObject);
        console.log(htmlObject);
    </script>
</body>
</html>

In this example, we have an HTML file with a div element that has an id of "output".

In the embedded script, we define a function stringToHTML, which takes a string str as an argument. Inside the function, we create a new Range object using document.createRange() and then use range.createContextualFragment to convert the provided string into a DocumentFragment.

Finally, the DocumentFragment is returned.

We define an HTML string htmlString containing an h1 heading and a p element. We call stringToHTML with htmlString and assign the result to htmlObject.

We retrieve the output div using document.getElementById('output'). Finally, we append the htmlObject (which contains the parsed HTML) to the outputDiv.

Output:

createRange and createContextualFragment

When you open this HTML file in a browser, you will see "Hello world!" in a heading format followed by "How are you today?" in a paragraph format on the webpage. This demonstrates the successful conversion of the HTML string into an HTML object using createRange and createContextualFragment.

Conclusion

In this guide, we’ve explored multiple methods to convert strings into HTML objects in JavaScript. Each method has its strengths and use cases:

  • Using innerHTML:
    • Offers a direct way to manipulate HTML content within an element.
    • Simple and widely used for string-to-HTML conversion.
  • Leveraging DOMParser():
    • Provides a powerful tool for parsing XML or HTML source code from a string.
    • Useful for handling complex XML or HTML structures.
  • Employing jQuery:
    • Convenient for parsing HTML strings and creating jQuery-wrapped objects.
    • Beneficial for projects using jQuery or for developers comfortable with its syntax.
  • Utilizing createRange and createContextualFragment:
    • Offers fine-grained control over the conversion process.
    • Suitable for tasks requiring precise DOM manipulation.

These methods enable developers to efficiently convert strings into functional HTML elements, enhancing interactivity and user experience in web applications. Consider security, performance, and semantic HTML practices when implementing these approaches in real-world projects.

Anika Tabassum Era avatar Anika Tabassum Era avatar

Era is an observer who loves cracking the ambiguos barriers. An AI enthusiast to help others with the drive and develop a stronger community.

LinkedIn Facebook

Related Article - JavaScript String