Как побороть 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 нормально. :) Как можна изменить содержимое таблицы НОРМАЛЬНО? Какие еще есть варианты узнать на какую строку нажал пользователь? |
А на ячейку если поставить обработчик?
|
Мне надо именно на строку.
|
не знаю, как вы меняете все содержимое таблицы
table.innerHTML = '<tr>...</tr>...<tr>...</tr>' у меня не работает, да и не стоит так делать пожалуй я написал table.outerHTML = '<table>...</table>' и у меня все корректно работает (в IE 7) и тот баг-репорт с вашей проблемой не связан |
gcolor,
Сорри, сначала не понял в чем проблема. Нормально работать с таблицей нужно используя методы insertRow и insertCell, innerHTML для таблиц использовать нельзя. |
но outerHTML можно
|
outerHTML работает только в ИЕ.
|
Так суть в том что я использую innerHTML и все у меня работает отлично только вот rowIndex глючит (в тех браузерах что я указал). Вставка происходит корректно, все что между <table></table> заменяеться на то что мне нужно. (Смотрел через Firebug). Использовать insertRow и другое не могу в силу специфики движка который пишу.
|
про 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 использоваться нельзя Цитата:
Цитата:
|
В 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++; } } } |
Часовой пояс GMT +3, время: 00:36. |