The Node.textContent property represents the text content of a node and its descendants.
Syntax
var text = element.textContent; element.textContent = "this is some sample text";
Description
- textContentreturns- nullif the element is a document, a document type, or a notation. To grab all of the text and CDATA data for the whole document, one could use- document.documentElement.textContent.
- If the node is a CDATA section, a comment, a processing instruction, or a text node, textContentreturns the text inside this node (the nodeValue).
- For other node types, textContentreturns the concatenation of thetextContentattribute value of every child node, excluding comments and processing instruction nodes. This is an empty string if the node has no children.
- Setting this property on a node removes all of its children and replaces them with a single text node with the given value.
Differences from innerText
Internet Explorer introduced element.innerText. The intention is similar but with the following differences:
- While textContentgets the content of all elements, including<script>and<style>elements, the IE-specific propertyinnerTextdoes not.
- innerTextis aware of style and will not return the text of hidden elements, whereas textContent will.
- As innerTextis aware of CSS styling, it will trigger a reflow, whereastextContentwill not.
- Unlike textContent, alteringinnerTextin Internet Explorer (up to version 11 inclusive) not just removes child nodes from the element, but also permanently destroys all descendant text nodes (so it is impossible to insert the nodes again into any other element or into the same element anymore).
Differences from innerHTML
innerHTML returns the HTML as its name indicates. Quite often, in order to retrieve or write text within an element, people use innerHTML. textContent should be used instead. Because the text is not parsed as HTML, it's likely to have better performance. Moreover, this avoids an XSS attack vector.
Example
// Given the following HTML fragment:
//   <div id="divA">This is <span>some</span> text</div>
// Get the text content:
var text = document.getElementById("divA").textContent;
// |text| is set to "This is some text".
// Set the text content:
document.getElementById("divA").textContent = "This is some text";
// The HTML for divA is now:
//   <div id="divA">This is some text</div>
Polyfill for IE8
if (Object.defineProperty 
  && Object.getOwnPropertyDescriptor 
  && Object.getOwnPropertyDescriptor(Element.prototype, "textContent") 
  && !Object.getOwnPropertyDescriptor(Element.prototype, "textContent").get) {
  (function() {
    var innerText = Object.getOwnPropertyDescriptor(Element.prototype, "innerText");
    Object.defineProperty(Element.prototype, "textContent",
     {
       get: function() {
         return innerText.get.call(this);
       },
       set: function(s) {
         return innerText.set.call(this, s);
       }
     }
   );
  })();
}
Browser compatibility
| Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari | 
|---|---|---|---|---|---|
| Basic support | 1+ | 2 | 9 | 9.64 (possibly earlier) | 3 (possibly earlier) | 
| Feature | Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile | 
|---|---|---|---|---|---|
| Basic support | ? | ? | ? | ? | ? | 
Specifications
| Specification | Status | Comment | 
|---|---|---|
| DOM The definition of 'Node.textContent' in that specification. | Living Standard | No changes versus DOM4 | 
| DOM4 The definition of 'Node.textContent' in that specification. | Working Draft | |
| Document Object Model (DOM) Level 3 Core Specification The definition of 'Node.textContent' in that specification. | Recommendation | Introduced | 
See also
Document Tags and Contributors
    
    Tags: 
    
  
                  
                    
                       Contributors to this page: 
        chaoix, 
    
        Marat-Tanalin, 
    
        cvrebert, 
    
        krissy82476, 
    
        Sheppy, 
    
        kangax, 
    
        AlexAngas, 
    
        fscholz, 
    
        Agamemnus, 
    
        AlexChao, 
    
        teoli, 
    
        neilerdwien, 
    
        kscarfone, 
    
        Khodaidad_Basharmand, 
    
        ethertank, 
    
        chitsaou, 
    
        alex35, 
    
        dbruant, 
    
        paul.irish, 
    
        Brettz9, 
    
        zpao, 
    
        Matej Lednar, 
    
        Riquito, 
    
        Mgjbot, 
    
        Federico, 
    
        Nickolay, 
    
        RobG, 
    
        Fguisset
    
                    
                  
                  
                    
                       Last updated by:
                      chaoix,