[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: С Осликом воюю... Не хочет понимать innerHTML
sergeiss
Проблема такая. Осёл (не зря его так прозвали smile.gif) не понимает, когда я ДЛЯ ТАБЛИЦЫ прописываю innerHTML. Причем, если я вывожу innerHTML уже сформированной таблицы, то он его показывает корректно! Затем я могу взять этот самый код, что мне показал Осёл, попытаться вставить его в innerHTML таблицы... И ничего не будет. Просто ноль реакции.

В то же время, все остальные браузеры - Опера, Хром, Огнелис, Сафари - прекрасно всё понимают. Нужно мне это для передачи таблицы через аякс.

Кто-нибудь что-нибудь разумное скажет? Как бы эту проблему решить "малой кровью" и с применением только базовых возможностей, безо всяких jQuery? И еще - рисовать всю таблицу поэлементно я не хочу smile.gif Там тоже грабли есть, по которым я тоже уже успел попрыгать.

PS. Да, забыл сказать - Ослик 9-й! Недавно "самоустановился" вместе с другими обновлениями Винды (семерка стоит).



Спустя 6 минут, 46 секунд (20.09.2012 - 11:22) redreem написал(а):
выложи страничку с таким примером.

Спустя 9 минут, 19 секунд (20.09.2012 - 11:32) sergeiss написал(а):
<table id="table01" border="1" >
<tr>
<td>
Cell 01</td>
<td>
Cell 02</td>
</tr>
</table>
<input
type="button" value="show" onclick=" document.getElementById( 'table01').innerHTML='<tbody><tr><td>Test</td></tr><tbody>'; " />
<br />
<input
type="button" value="get" onclick=" alert( document.getElementById( 'table01').innerHTML )" />

Вот пример, упрощенный до предела. Посмотреть innerHTML можно в любом браузере, а установить - везде, кроме Осла.

И это именно для таблиц! Другие элементы, типа ДИВа, нормально прописываются.

Спустя 14 минут, 39 секунд (20.09.2012 - 11:46) Winston написал(а):
Попробуй outerHTML

Спустя 56 секунд (20.09.2012 - 11:47) redreem написал(а):
ну да, вроде как "никак" smile.gif
как вариант - использовать методы insertRow и insertCell

Спустя 5 минут, 20 секунд (20.09.2012 - 11:53) sergeiss написал(а):
СтОило написать тут, как нашел решение smile.gif Просто не в таблице прописываю innerHTML, а в ДИВе. То есть, передаю туда полную таблицу, вместе с тэгами table - в усё ОК.
Даже Осёл понял, что же я хочу.

Так что - спасибо всем за внимание к проблеме smile.gif Грабли я убрал до следующего раза, они мне еще не раз пригодятся, я думаю.

Цитата (redreem @ 20.09.2012 - 12:47)
как вариант - использовать методы insertRow и insertCell

Я ж написал в самом начале
Цитата (sergeiss @ 20.09.2012 - 12:16)
рисовать всю таблицу поэлементно я не хочу. Там тоже грабли есть, по которым я тоже уже успел попрыгать.


Спустя 1 минута, 22 секунды (20.09.2012 - 11:54) johniek_comp написал(а):
а в ie нельзя таблицу вставить по умолчанию, я когда делал такое то скопировал пример от сюда

Спустя 2 минуты, 27 секунд (20.09.2012 - 11:56) sergeiss написал(а):
Цитата (johniek_comp @ 20.09.2012 - 12:54)
я когда делал такое то скопировал пример....

Да, я уже примерно также и сделал. С той разницей, что ДИВ создаю изначально, а потом прописываю в него всю таблицу.

Спустя 4 минуты, 25 секунд (20.09.2012 - 12:01) sergeiss написал(а):
Цитата (Winston @ 20.09.2012 - 12:46)
Попробуй outerHTML

Этаааа... Да, и это тоже работает!!! smile.gif

PS. Только его, похоже, Огнелис не понял...

Спустя 5 минут, 3 секунды (20.09.2012 - 12:06) Winston написал(а):
Цитата (sergeiss @ 20.09.2012 - 12:01)
PS. Только его, похоже, Огнелис не понял..

Спустя 8 минут, 21 секунда (20.09.2012 - 12:14) Игорь_Vasinsky написал(а):
а если не innerHTML юзать а


var table = document.getElementById('Table01');
var tr = document.createElement('tr')
tr.innerHTML = 'your code';

table.appendChild(tr)


????

Спустя 43 минуты, 25 секунд (20.09.2012 - 12:58) Invis1ble написал(а):
sergeiss
если собираешься писать насыщенное приложение, я бы все-таки посоветовал пересмотреть свои взгляды на использование библиотек. Потому что граблей будет очень много без них (и в конечном итоге кода может получиться даже больше, чем с ними) smile.gif

Спустя 28 минут, 50 секунд (20.09.2012 - 13:26) sergeiss написал(а):
Цитата (Игорь_Vasinsky @ 20.09.2012 - 13:14)
а если не innerHTML юзать а.....

Игорь, опять ты не внимательно читаешь smile.gif Я ж написал в самом начале
Цитата (sergeiss @ 20.09.2012 - 12:16)
И еще - рисовать всю таблицу поэлементно я не хочу


Цитата (Invis1ble @ 20.09.2012 - 13:58)
если собираешься писать насыщенное приложение, я бы все-таки посоветовал пересмотреть свои взгляды на использование библиотек.

Я ничего не имею против библиотек smile.gif Но в данном случае они не нужны.

Спустя 13 минут, 45 секунд (20.09.2012 - 13:40) Игорь_Vasinsky написал(а):
Цитата
И еще - рисовать всю таблицу поэлементно я не хочу

так у тя и так не рисует laugh.gif

Спустя 3 минуты, 37 секунд (20.09.2012 - 13:44) sergeiss написал(а):
Цитата (Игорь_Vasinsky @ 20.09.2012 - 14:40)
так у тя и так не рисует

Как так? Уже давно рисует! smile.gif Читай внимательнее:
Цитата (sergeiss @ 20.09.2012 - 12:56)
Да, я уже примерно также и сделал. С той разницей, что ДИВ создаю изначально, а потом прописываю в него всю таблицу.


Спустя 8 минут, 30 секунд (20.09.2012 - 13:52) ZSH написал(а):
Все верно. Перед вставкой innerHTML удаляется то что там было, и остается <table></table> без содержимого. А некоторые браузеры динамически коректируют DOM, и в даном случае проста удаляется пусой <table></table> и вставлять содержимое уже некуда.
Когда-то я изобретал велосипед(WYSIWYG), ох намучился с автоподстановкой и подчисткой браузером тегов.
Правильным вариантом обернуть таблицу в DIV и заменять полностью таблицу, как и решилось.

Спустя 4 часа, 39 минут, 37 секунд (20.09.2012 - 18:32) inpost написал(а):
sergeiss
На офф.сайте майкрософта ошибку с innerHTML признали и показали другие варианты решения данной проблемы. Либо помещать в ДИВ и его изменять, либо outerHTML, а он же имеет баги с ФФ. Буквально недельки полторы показывал Винстону баг-репорт с сайта майкрософта. У них даже примеры кода выставлены, как исправлять ошибку и писать код на JS smile.gif


_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.