Get value from div with JavaScript resulting undefined?

When trying to get the value from a div element using JavaScript, you might encounter undefined results if you use incorrect properties. The key is understanding the difference between innerHTML, textContent, and value.

The Problem

The most common mistake is using .value on div elements. The value property only works for form inputs like <input>, <textarea>, and <select>. For div elements, use innerHTML or textContent.

Using innerHTML

innerHTML gets the HTML content inside the element, including any HTML tags:

<!DOCTYPE html>
<html>
<head>
    <title>Get Div Value</title>
</head>
<body>
    <div id="myDiv">Hello <strong>World</strong></div>
    <button onclick="getInnerHTML()">Get innerHTML</button>
    
    <script>
        function getInnerHTML() {
            var divValue = document.getElementById('myDiv').innerHTML;
            console.log("innerHTML:", divValue);
            alert("innerHTML: " + divValue);
        }
    </script>
</body>
</html>
innerHTML: Hello <strong>World</strong>

Using textContent

textContent gets only the text content, without HTML tags:

<!DOCTYPE html>
<html>
<head>
    <title>Get Div Text</title>
</head>
<body>
    <div id="myDiv">Hello <strong>World</strong></div>
    <button onclick="getTextContent()">Get textContent</button>
    
    <script>
        function getTextContent() {
            var divText = document.getElementById('myDiv').textContent;
            console.log("textContent:", divText);
            alert("textContent: " + divText);
        }
    </script>
</body>
</html>
textContent: Hello World

Editable Div Example

For contenteditable divs, both methods work to get the current content:

<!DOCTYPE html>
<html>
<head>
    <title>Editable Div Value</title>
</head>
<body>
    <div id="editableDiv" style="border: 1px solid #ccc; padding: 10px; width: 300px;">
        Type something here...
    </div>
    <button onclick="getValue()">Get Value</button>
    
    <script>
        function getValue() {
            var content = document.getElementById('editableDiv').innerHTML;
            console.log("Div content:", content);
            alert("Div content: " + content);
        }
    </script>
</body>
</html>

Common Mistakes to Avoid

Wrong Approach Correct Approach Use Case
div.value div.innerHTML Get HTML content
div.value div.textContent Get plain text only
Wrong element ID Correct element ID Target the right element

Error Handling

Always check if the element exists before accessing its properties:

<!DOCTYPE html>
<html>
<head>
    <title>Safe Value Retrieval</title>
</head>
<body>
    <div id="myDiv">Sample content</div>
    <button onclick="safeGetValue()">Safe Get Value</button>
    
    <script>
        function safeGetValue() {
            var element = document.getElementById('myDiv');
            
            if (element) {
                var value = element.innerHTML;
                console.log("Value:", value);
                alert("Value: " + value);
            } else {
                console.log("Element not found");
                alert("Element not found");
            }
        }
    </script>
</body>
</html>

Conclusion

Use innerHTML to get HTML content from div elements, or textContent for plain text. Never use .value on div elements as it returns undefined. Always verify the element exists before accessing its properties.

Updated on: 2026-03-15T23:18:59+05:30

3K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements