Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   innerText или textContent (https://javascript.ru/forum/dom-window/35707-innertext-ili-textcontent.html)

danik.js 07.09.2013 06:44

Цитата:

Сообщение от Яростный Меч
насчет innerHTML - понятно почему, а textContent по идее должен работать так же.

Поковырялся в исходниках WebKit. Оказывается при установке textContent все дочерние элементы удаляются и создается новая текстовая нода, а при установке innerText если элемент содержит одну текстовую ноду, то просто устанавливается новое содержимое для нее.

Наглядно:
var container = document.createElement('div');
var childTextNode = container.appendChild(document.createTextNode('111'));
container.innerText = '222';
alert([childTextNode.data, childTextNode === container.firstChild]); // выдаст 222, а не 111
container.textContent = '333'
alert([childTextNode.data, childTextNode === container.firstChild]); // выдаст 222, false


Если текст будет содержать переносы или изначально нода будет содержать более одной ноды, то тесты могут дать другие результаты.

Яростный Меч 07.09.2013 15:21

Ага, спасибо.
Тогда, видимо, лучше всего напрямую менять значение текстовой ноды. И кроссбраузерно, и гарантировано быстрый вариант.

simple 07.09.2013 22:55

разница в скорости очень маленькая, но все равно спасибо за совет.
http://jsperf.com/innertext-vs-textcontent-complette/3


Часовой пояс GMT +3, время: 08:48.