2014-10-30 4 views
2

В веб-приложении я динамически создаю большую и довольно сложную таблицу с 10,000 пустых ячейках на первом шаге (некоторые ячейки таблицы останутся пустыми, а некоторые нет). Мой первый appoach используется innerHtml с no-break space, чтобы предотвратить пустые клетки от разрушения:Вставить пространство без пробела по элементу.innerText

td.innerHtml = ' '; 

Но это было довольно медленно. Затем I discovered, что для установки innerText выполняется намного быстрее, чем установка innerHtml. Поэтому я изменил мой код

td.innerText = '\u00a0'; 

потому что td.innerText = ' ' просто написал текст " " в каждой ячейке. Казалось, что он работает в Internet Explorer 11, но в Firefox границы пустых ячеек исчезли. Но я не вижу никакой разницы, если я проверяю ячейки (через Firebug или что-то еще) и сравниваю их с моей предыдущей версией.

+4

Firefox не поддерживает 'innerText', в пользу' textContent' – ndugger

+3

'innerText' является собственными расширениями Microsoft, iirc. –

+1

Я не уверен, что понимаю, что означает «рушится», и почему это не может быть эффективно решено с помощью CSS. – Pointy

ответ

4

element.innerText не является стандартным. Он был представлен Microsoft в Internet Explorer, но никакие другие браузеры не гарантируют его поддержку (именно поэтому вы видите причуды).

Используйте element.textContent или переосмыслите свой подход. Генерация 10k пустой таблицы звучит как очень плохая идея.

+0

Хром очень хорошо поддерживает 'innerText'. Так же, как это поддерживает 'document.all' ... –

+0

Я никогда не говорил, что ни один другой браузер не поддерживает его, я сказал, что никто не гарантирует ** поддержку, потому что это не стандарт. –

+0

В большинстве случаев гораздо меньше клеток. 10k - более исключительный случай, но иногда это случается. Спасибо за ваш ответ! – Sebastian