Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   IE innerHTML или innerText чем заменить? (https://javascript.ru/forum/misc/31442-ie-innerhtml-ili-innertext-chem-zamenit.html)

vitorrio 07.09.2012 18:52

IE innerHTML или innerText чем заменить?
 
В таблице из ячейке как выгрузить текст в переменную?

bes 07.09.2012 19:12

innerText || textContent, innerHTML

vitorrio 07.09.2012 19:20

bes,
innerHTML,innerText в IE 8 не работает:
Сведения об ошибке на веб-странице

Сообщение: 'innerHTML' - есть null или не является объектом
Строка: 298
Символ: 1
Код: 0

textContent - сейчас проверю.

bes 07.09.2012 19:22

тестовый пример
ошибка не в этом

devote 07.09.2012 19:23

Цитата:

Сообщение от vitorrio
innerHTML,innerText в IE 8 не работает:

что за бред? вы на каком элементе их применяете? Они могут отсутствовать например на текстовых нодах но на элементах в ИЕ8 они всегда есть.

vitorrio 07.09.2012 20:14

Да, нашел ошибку.. она была в этом:

var sosed=rod.previousElementSibling;

Этот метод не поддерживает, Нашел тут http://habrahabr.ru/post/54380/
скрипт и с помощью него как я понял будет поддерживать, но чет не работает..:

// Создаем новый элемент для дальнейших проверок
var element = document.createElement("div");

// Проверяем, что браузер не поддерживает ElementTraversal
if(typeof element.firstElementChild == "undefined") {

   // Создаем объект с набором методов
   var ElementTravrsal = {

     // Поиск первого дочернего элемента
     firstElementChild: function() {
       // Получаем первый дочерний узел
       var node = this.firstChild;
       // Находим следующий соседний узел пока не встретили элемент
       // или не получили значение null
       while(node && node.nodeType != 1) node = node.nextSibling;
       // Возвращаем найденный элемент или null
       return node;
     },

     // Поиск последнего дочернего элемента
     lastElementChild: function() {
       // Получаем последний дочерний узел
       var node = this.lastChild;
       // Находим предыдущий соседний узел пока не встретили элемент
       // или не получили значение null
       while(node && node.nodeType != 1) node = node.previousSibling;
       // Возвращаем найденный элемент или null
       return node;
     },

     // Поиск следующего соседнего элемента
     nextElementSibling: function() {
       // Объявляем переменную и инициализируем
       // ее ссылкой на текущий элемент
       var node = this;
       // Находим следующий соседний узел пока не встретили элемент
       // или не получили значение null
       do node = node.nextSibling
       while(node && node.nodeType != 1);
       // Возвращаем найденный элемент или null
       return node;
     },

     // Поиск предыдущего соседнего элемента
     previousElementSibling: function() {
       // Объявляем переменную и инициализируем
       // ее ссылкой на текущий элемент
       var node = this;
       // Находим предыдущий соседний узел пока не встретили элемент
       // или не получили значение null
       do node = node.previousSibling;
       while(node && node.nodeType != 1);
       // Возвращаем найденный элемент или null
       return node;
     },

     // Определение количества дочерних элементов
     // Проверяем, что браузер не поддерживает геттер children
     childElementCount: typeof element.children == "undefined" ? function() {
       // Браузер не поддерживает children,
       // поэтому получаем список всех дочерних узлов
       var list = this.childNodes,
       // определяем их количество
       i = list.length,
       // заводим счетчик элементов
       j = 0;
       // Проходя в цикле по всем дочерним узлам,
       while(i--)
           // если встретился элемент,
         if(list[i].nodeType == 1)
           // увеличиваем счетчик
           j++;
       // Возвращаем количество дочерних узлов или 0
       return j;
     } : function() {
       // Браузер поддерживает children,
       // поэтому получаем список всех дочерних элементов
       // и возвращаем их количество
       return this.children.length;
     }
   };

   // Создаем геттеры для IE8
   if(Object.defineProperty)
     for(var property in ElementTravrsal)
       if(ElementTravrsal.hasOwnProperty(property))
         Object.defineProperty(Element.prototype, property, {
           get: ElementTravrsal[property]
         });

   // для Firefox 2+ и Safari 3+
   if(Object.__defineGetter__)
     for(var property in ElementTravrsal)
       if(ElementTravrsal.hasOwnProperty(property))
         HTMLElement.prototype.__defineGetter__(property, ElementTravrsal[property]);

 }


И что мне теперь делать как прописать это : var sosed=rod.previousElementSibling; чтобы работало?

vitorrio 07.09.2012 20:44

Все-таки innerHTML тоже не работает:
var table=document.getElementById('table');
table.innerHTML=Storage.getItem('table');


Сведения об ошибке на веб-странице

Агент пользователя: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729; .NET4.0C; .NET4.0E; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; InfoPath.2; .NET4.0E; WebMoney Advisor)
штамп времени: Fri, 7 Sep 2012 16:43:00 UTC


Сообщение: Неизвестная ошибка выполнения
Строка: 98
Символ: 1
Код: 0

table элемент определен его innerHTML даже отображается через alert... storage.table тоже определен и через alert можно посмотреть что там...
В чем может быть проблема?

devote 07.09.2012 21:14

Цитата:

Сообщение от vitorrio
Все-таки innerHTML тоже не работает:

потому что элементу TABLE нельзя назначить innerHTML, он применим только блочным и инлайновым элементам, ну и еще к некоторым, например к TD таблично-строчный элемент

vitorrio 07.09.2012 21:24

devote,
А в опере и в mozile то все работает..
К tbody внутри таблицы можно?

devote 07.09.2012 23:47

Цитата:

Сообщение от vitorrio
А в опере и в mozile то все работает..

нашел что сравнить... Ие всегда славился и славится своими запретами.

Цитата:

Сообщение от vitorrio
К tbody внутри таблицы можно?

не знаю, я не юзаю innerHTML для таблиц есть специальные методы, на подобии insertCell, insertRow вот их и нужно юзать


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