2015-07-26 10 views
10

Qual è il vantaggio della creazione di un TextNode e dell'appenderlo a un elemento HTML impostando direttamente il suo textContent?TextNode o textContent?

Diciamo che ho uno span.

var span = document.getElementById('my-span'); 

E voglio cambiare il suo testo. Qual è il vantaggio di utilizzare:

var my_text = document.createTextNode('Hello!'); 
span.appendChild(my_text); 

oltre

span.textContent = 'hello';

risposta

12

E 's non è davvero questione di vantaggio, ma di un uso corretto a seconda della necessità.

La differenza fondamentale è che:

  • createTextNode() è un metodo e funziona proprio come dice il nome: si crea un elemento ... allora si deve fare qualcosa con esso (come nel tuo esempio, in cui si aggiungilo come un bambino);
    quindi è utile se si vuole avere un nuovo elemento e metterlo da qualche parte
  • textContent è una proprietà si può ottenere o impostare, con una dichiarazione unica e nient'altro;
    quindi è utile quando si desidera solo modificare il contenuto di un già esistente elemento

Ora, nel caso specifico della tua domanda, lei ha detto di voler cambiamento il testo della elemento ...
Per essere più chiaro dire che si ha la seguente elemento HTML:

<span>Original text</span> 

Se stai usando la tua prima soluzione:

var my_text = document.createTextNode('Hello!'); 
span.appendChild(my_text); 

allora si concluderà con:

<span>Original textHello!</span> 

perché si aggiunto tuo textNode.

Quindi è necessario utilizzare la seconda soluzione.

Problemi correlati