Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.02.2013, 15:00
Аватар для simple
Профессор
Отправить личное сообщение для simple Посмотреть профиль Найти все сообщения от simple
 
Регистрация: 23.09.2010
Сообщений: 247

innerText или textContent
Добрый день, подскажите пожалуйста какое свойство лучше использовать для доступа к значениям ячеек таблицы? Оба работают одинаково, на первый взгляд, но в чем их отличие?
Ответить с цитированием
  #2 (permalink)  
Старый 19.02.2013, 15:39
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

textContent отсутствует в IE8-
свойство innerText не описано в спецификации (однако возможно в будущем это изменится), его нет в FireFox, и поведение отличается тем, что все <br> конвертируются в конец строки.
Ответить с цитированием
  #3 (permalink)  
Старый 19.02.2013, 16:48
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,214

Сообщение от simple
подскажите пожалуйста какое свойство лучше использовать для доступа к значениям ячеек таблицы?
innnerHTML...
Ответить с цитированием
  #4 (permalink)  
Старый 22.03.2013, 23:59
Аспирант
Отправить личное сообщение для Benos Посмотреть профиль Найти все сообщения от Benos
 
Регистрация: 09.01.2012
Сообщений: 48

День добрый... столкнулся с проблемой...
Есть код:
<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"

Браузер Мозила
Ответить с цитированием
  #5 (permalink)  
Старый 23.03.2013, 05:47
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

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

<!DOCTYPE html>
<SMALL>
    <BR>Состояние обновления<br> <B>Данные обновлены <br>21 ч. 58 мин. назад.</B>
</SMALL>
<script>
var textTMP = document.getElementsByTagName('SMALL')[0].textContent;
alert(textTMP);
</script>
Ответить с цитированием
  #6 (permalink)  
Старый 06.09.2013, 22:24
Аватар для simple
Профессор
Отправить личное сообщение для simple Посмотреть профиль Найти все сообщения от simple
 
Регистрация: 23.09.2010
Сообщений: 247

innerText в разы быстрее обновляет текстовые узлы чем textContent и innerHTML
__________________
На начальном этапе события могут казаться случайными, но постепенно проявляется связь, и в конце концов все части целого складываются
Ответить с цитированием
  #7 (permalink)  
Старый 06.09.2013, 22:45
Профессор
Отправить личное сообщение для Яростный Меч Посмотреть профиль Найти все сообщения от Яростный Меч
 
Регистрация: 12.04.2010
Сообщений: 557

Сообщение от simple
innerText в разы быстрее обновляет текстовые узлы чем textContent и innerHTML
насчет innerHTML - понятно почему, а textContent по идее должен работать так же.

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


это предполагает, что кроме текста никаких элементов в ячейках не будет.
Ответить с цитированием
  #8 (permalink)  
Старый 06.09.2013, 23:05
Аватар для simple
Профессор
Отправить личное сообщение для simple Посмотреть профиль Найти все сообщения от simple
 
Регистрация: 23.09.2010
Сообщений: 247

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

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

браузер Chrome 29.0.1547.66
__________________
На начальном этапе события могут казаться случайными, но постепенно проявляется связь, и в конце концов все части целого складываются

Последний раз редактировалось simple, 06.09.2013 в 23:10.
Ответить с цитированием
  #9 (permalink)  
Старый 06.09.2013, 23:07
Аватар для simple
Профессор
Отправить личное сообщение для simple Посмотреть профиль Найти все сообщения от simple
 
Регистрация: 23.09.2010
Сообщений: 247

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


это предполагает, что кроме текста никаких элементов в ячейках не будет.
Это все понятно но меня интересует именно скорость обновления уже имеющих текстовых узлов.
__________________
На начальном этапе события могут казаться случайными, но постепенно проявляется связь, и в конце концов все части целого складываются
Ответить с цитированием
  #10 (permalink)  
Старый 07.09.2013, 04:01
Профессор
Отправить личное сообщение для Яростный Меч Посмотреть профиль Найти все сообщения от Яростный Меч
 
Регистрация: 12.04.2010
Сообщений: 557

Сообщение от simple
обновления уже имеющих текстовых узлов.
тем более, даже проще:
td.firstChild.data = "new value";

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработчик click вызывается несколько раз или не всегда вызывается OlegJquery jQuery 2 21.07.2011 20:37
Объект не поддерживает это свойство или метод load_081112_0953.js 1auto1 Internet Explorer 1 13.04.2011 21:59
Найти проблему с jQuery или писать js? Saladdin Элементы интерфейса 0 17.03.2011 17:02
В зависимости от referrer выводить рекламу adsene или зорьки wlad2 Общие вопросы Javascript 12 19.12.2010 01:02
Как узнать свернуто окно браузера или нет. bar-boss Events/DOM/Window 3 25.09.2008 16:09