WalzoneInterview Prep
📞 Interviewing soon? Practice with a realistic AI mock phone interview — it calls you, then scores you. First 15 min FREE →

JavaScript · Intermediate · question 38 of 100

How do you manipulate the DOM efficiently to reduce performance issues?

📕 Buy this interview preparation book: 100 JavaScript questions & answers — PDF + EPUB for $5

DOM manipulation is a common operation in web development, but it can also be a performance bottleneck if not done efficiently. Here are some tips for manipulating the DOM efficiently to reduce performance issues:

Minimize the number of DOM manipulations: Every time you make a change to the DOM, the browser has to recalculate the layout and repaint the screen, which can be a slow operation. Try to batch your DOM manipulations together, rather than making individual changes one at a time.

Use CSS classes instead of inline styles: Applying styles using inline styles can be slow, because the browser has to recalculate the layout every time the style is changed. Instead, use CSS classes to apply styles, and toggle classes on and off as needed.

Use document fragments: When you need to create a large number of DOM elements, it’s more efficient to create them all at once and then append them to the DOM in a single operation. You can do this using a document fragment, which is an in-memory container for DOM elements. Once you’ve created all the elements you need, you can append the document fragment to the DOM in a single operation.

Here’s an example of how to use a document fragment to efficiently create and append a large number of DOM elements:

    // Create a document fragment
    const fragment = document.createDocumentFragment();
    
    // Create a large number of DOM elements and add them to the fragment
    for (let i = 0; i < 1000; i++) {
        const div = document.createElement("div");
        div.textContent = "Hello world";
        fragment.appendChild(div);
    }
    
    // Append the fragment to the DOM in a single operation
    document.getElementById("container").appendChild(fragment);

Use event delegation: Instead of attaching event listeners to individual elements, use event delegation to attach a single event listener to a parent element. This can be more efficient, because the event listener only needs to be attached once, and it can handle events from all child elements.

Here’s an example of how to use event delegation to handle click events on a list of items:

    // Attach a click event listener to the parent element
    document.getElementById("list").addEventListener("click", function(event) {
        // Check if the click target is an item in the list
        if (event.target && event.target.nodeName === "LI") {
            // Handle the click event on the item
            console.log("Clicked item:", event.target.textContent);
        }
    });

In summary, to manipulate the DOM efficiently and reduce performance issues, you should minimize the number of DOM manipulations, use CSS classes instead of inline styles, use document fragments to create and append large numbers of DOM elements, and use event delegation to attach event listeners to parent elements.

Reading is step one. Saying it out loud is the interview. Our AI interviewer calls your phone and runs a realistic JavaScript interview — then scores it.
📞 Practice JavaScript — free 15 min
📕 Buy this interview preparation book: 100 JavaScript questions & answers — PDF + EPUB for $5

All 100 JavaScript questions · All topics