TextNode или textContent?

в чем преимущество создания TextNode и добавления его к элементу HTML по сравнению с установкой непосредственно его textContent?

допустим, у меня есть промежуток.

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

и я хочу изменить его текст. В чем преимущество использования :

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

над

span.textContent = 'hello';

1 ответов


на самом деле дело не в преимуществе, а в правильном использовании в зависимости от необходимости.

принципиальное отличие в том, что:

  • createTextNode() является методом и работает так же, как его имя говорит: он создает элемент... тогда вы должны что-то с ним сделать (как в вашем примере, где вы добавляете его как ребенка);
    так что это полезно, если вы хотите иметь новый элемент и разместить его где-нибудь
  • textContent это свойство можно получить или set, с уникальным утверждением и ничего больше;
    так что это полезно, когда вы хотите только изменить содержание уже существующие элемент

теперь, в точном случае вашего вопроса, Вы сказали, что хотите изменить текст элемента...
Чтобы быть более ясным, скажем, у вас есть следующий элемент HTML:

<span>Original text</span>

если вы используете первый вариант:

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

тогда это закончится с:

<span>Original textHello!</span>

потому что ты добавлен код textNode.

поэтому вы должны использовать второе решение.