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

simple 19.02.2013 15:00

innerText или textContent
 
Добрый день, подскажите пожалуйста какое свойство лучше использовать для доступа к значениям ячеек таблицы? Оба работают одинаково, на первый взгляд, но в чем их отличие?

danik.js 19.02.2013 15:39

textContent отсутствует в IE8-
свойство innerText не описано в спецификации (однако возможно в будущем это изменится), его нет в FireFox, и поведение отличается тем, что все <br> конвертируются в конец строки.

ksa 19.02.2013 16:48

Цитата:

Сообщение от simple
подскажите пожалуйста какое свойство лучше использовать для доступа к значениям ячеек таблицы?

innnerHTML...

Benos 22.03.2013 23:59

День добрый... столкнулся с проблемой...
Есть код:
<SMALL>
    <BR>Состояние обновления<br> <B>Данные обновлены <br>21 ч. 58 мин. назад.</B>
</SMALL>

Хочу вытащить текст...

Делаю:
var textTMP = document.getElementsByTagName('SMALL')[0].innerHTML;
alert(textTMP);

выдает:
"<BR>Состояние обновления<br> <B>Данные обновлены <br>21 ч. 58 мин. назад.</B>"

Делаю:
var textTMP = document.getElementsByTagName('SMALL')[0].innerText;

или
var textTMP = document.getElementsByTagName('SMALL')[0].textContent;

Выдает: "undefined"

Браузер Мозила

danik.js 23.03.2013 05:47

Согласно этой таблице, в Fifefox это свойство точно есть начиная с третьей версии.

<!DOCTYPE html>
<SMALL>
    <BR>Состояние обновления<br> <B>Данные обновлены <br>21 ч. 58 мин. назад.</B>
</SMALL>
<script>
var textTMP = document.getElementsByTagName('SMALL')[0].textContent;
alert(textTMP);
</script>

simple 06.09.2013 22:24

innerText в разы быстрее обновляет текстовые узлы чем textContent и innerHTML

Яростный Меч 06.09.2013 22:45

Цитата:

Сообщение от simple
innerText в разы быстрее обновляет текстовые узлы чем textContent и innerHTML

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

если важна скорость - попробуй ещё такой вариант:
var fc = node.firstChild;
(fc ? (fc.data = "text") : node.appendChild(document.createTextNode("text"));


это предполагает, что кроме текста никаких элементов в ячейках не будет.

simple 06.09.2013 23:05

Цитата:

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

согласен но вот тесты показывают обратное

http://jsperf.com/innertext-vs-textcontent-complette

браузер Chrome 29.0.1547.66

simple 06.09.2013 23:07

Цитата:

Сообщение от Яростный Меч
если важна скорость - попробуй ещё такой вариант:
var fc = node.firstChild;
(fc ? (fc.data = "text") : node.appendChild(document.createTextNode("text"));


это предполагает, что кроме текста никаких элементов в ячейках не будет.

Это все понятно но меня интересует именно скорость обновления уже имеющих текстовых узлов.

Яростный Меч 07.09.2013 04:01

Цитата:

Сообщение от simple
обновления уже имеющих текстовых узлов.

тем более, даже проще:
td.firstChild.data = "new value";

где td - ссылка на ячейку таблицы, содержащую текст.


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