Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.01.2009, 22:28
Интересующийся
Отправить личное сообщение для gcolor Посмотреть профиль Найти все сообщения от gcolor
 
Регистрация: 19.11.2008
Сообщений: 17

Как побороть BUG?
Здраствуйте. Есть таблица. В какой-то момент времени все ее содержимое изменяеться через innerHTML. Тоисть я передаю такое значение:
<tr onclick='Go(this)'>
<td>some data</td><td>some data2</td>
</tr>
.............
<tr onclick='Go(this)'>
<td>some data150</td><td>some data200</td>
</tr>

Сама функция Go :
function Go(asder)
{
alert(asder.rowIndex);
}

Тоисть процедура показывает на какую строку мы нажали. В Firefox и Opera все работает коректо, а вот в Chrome и IE показывает -1.
Покопался в нете. Нашел вот : http://connect.microsoft.com/IE/feed...dbackID=371923 Вообщем БАГ. И будет исправлен только в 8 версии IE. Там пишут что такое происходит когда єлементы не присоеденны к document нормально.
Как можна изменить содержимое таблицы НОРМАЛЬНО?
Какие еще есть варианты узнать на какую строку нажал пользователь?

Последний раз редактировалось gcolor, 14.01.2009 в 22:39.
Ответить с цитированием
  #2 (permalink)  
Старый 14.01.2009, 22:34
Отправить личное сообщение для Андрей Параничев Посмотреть профиль Найти все сообщения от Андрей Параничев
 
Регистрация: 21.02.2008
Сообщений: 1,250

А на ячейку если поставить обработчик?
Ответить с цитированием
  #3 (permalink)  
Старый 14.01.2009, 22:37
Интересующийся
Отправить личное сообщение для gcolor Посмотреть профиль Найти все сообщения от gcolor
 
Регистрация: 19.11.2008
Сообщений: 17

Мне надо именно на строку.
Ответить с цитированием
  #4 (permalink)  
Старый 15.01.2009, 04:56
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

не знаю, как вы меняете все содержимое таблицы
table.innerHTML = '<tr>...</tr>...<tr>...</tr>'

у меня не работает, да и не стоит так делать пожалуй
я написал table.outerHTML = '<table>...</table>' и у меня все корректно работает (в IE 7)
и тот баг-репорт с вашей проблемой не связан
Ответить с цитированием
  #5 (permalink)  
Старый 15.01.2009, 17:23
Отправить личное сообщение для Андрей Параничев Посмотреть профиль Найти все сообщения от Андрей Параничев
 
Регистрация: 21.02.2008
Сообщений: 1,250

gcolor,
Сорри, сначала не понял в чем проблема. Нормально работать с таблицей нужно используя методы insertRow и insertCell, innerHTML для таблиц использовать нельзя.
Ответить с цитированием
  #6 (permalink)  
Старый 15.01.2009, 17:36
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

но outerHTML можно
Ответить с цитированием
  #7 (permalink)  
Старый 15.01.2009, 17:53
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

outerHTML работает только в ИЕ.
Ответить с цитированием
  #8 (permalink)  
Старый 15.01.2009, 23:11
Интересующийся
Отправить личное сообщение для gcolor Посмотреть профиль Найти все сообщения от gcolor
 
Регистрация: 19.11.2008
Сообщений: 17

Так суть в том что я использую innerHTML и все у меня работает отлично только вот rowIndex глючит (в тех браузерах что я указал). Вставка происходит корректно, все что между <table></table> заменяеться на то что мне нужно. (Смотрел через Firebug). Использовать insertRow и другое не могу в силу специфики движка который пишу.
Ответить с цитированием
  #9 (permalink)  
Старый 16.01.2009, 00:22
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

про IE: innerHTML is read/write for all objects except the following, for which it is read-only: COL, COLGROUP, FRAMESET, HEAD, HTML, STYLE, TABLE, TBODY, TFOOT, THEAD, TITLE, TR.
другими словами innerHTML для записи в table использоваться нельзя

Цитата:
Так суть в том что я использую innerHTML и все у меня работает отлично только вот rowIndex глючит (в тех браузерах что я указал).
и как же ваше "работает отлично" соотносится с "rowIndex глючит"

Цитата:
Использовать insertRow и другое не могу в силу специфики движка который пишу.
чем ваш проект так специфичен, что в нем нельзя использовать insertRow?
Ответить с цитированием
  #10 (permalink)  
Старый 16.01.2009, 01:06
Интересующийся
Отправить личное сообщение для gcolor Посмотреть профиль Найти все сообщения от gcolor
 
Регистрация: 19.11.2008
Сообщений: 17

В Firefox и Opera все работает коректно. Не работает в Chrome и IE.
Используеться AJAX. Клиент получает xml файл, где прописано какой єлемент ID надо изменить, и значение для изменения. Вот кусок функции
function ShowData(){ // розбираємо відповідь сервера
 for (i=0; i < xmlDOC.getElementsByTagName('response').length; i++){
       //-- получаємо значення CSS для об"єкта;
   var changeCSS=xmlDOC.getElementsByTagName("css")[i].childNodes[i].nodeValue;
      //-- получаємо ID яке потрібно змінити
   var changeID=xmlDOC.getElementsByTagName('changeid')[i].childNodes[i].nodeValue;
   //-- получаємо значення що потрібно зробити
    var methodID=xmlDOC.getElementsByTagName('methodid')[i].childNodes[i].nodeValue;
   //-- получаємо контент
    var content=xmlDOC.getElementsByTagName("maindata")[i].childNodes[i].nodeValue;
  }
    $(changeID).innerHTML=content;
//--- прикручуємо скрипти
var scripts = $(changeID).getElementsByTagName('script');
if (scripts.length > 0) {
                var l = 0;
                for (var i=0; i < scripts.length - l; i++) {
                    if (scripts[i].src) {
                        var newScr = document.createElement('script');
                        newScr.src = scripts[i].src;
                        $(changeID).appendChild(newScr);
                        l++;
                    } else {
                        var newScr = document.createElement('script');
                        newScr.text = scripts[i].text;
                        $(changeID).appendChild(newScr);
                        l++;
                    }
                }
            }
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как взять выделенный текст из textarea? fankiss Общие вопросы Javascript 5 13.02.2016 14:36
Переменная от переменной или как к имени переменной конкатенировать значение другой Aderba jQuery 5 12.11.2008 15:25
форма как в ExtJS 2 magistr_bender Общие вопросы Javascript 0 11.09.2008 16:01
Раскрывающееся меню, как переставить на другую сторону? Resager Events/DOM/Window 8 22.08.2008 21:56
Как распознать текст? monach79 Общие вопросы Javascript 12 21.07.2008 13:22