Показать сообщение отдельно
  #7 (permalink)  
Старый 24.05.2008, 00:19
Отправить личное сообщение для Андрей Параничев Посмотреть профиль Найти все сообщения от Андрей Параничев
 
Регистрация: 21.02.2008
Сообщений: 1,250

Во-первых, тег <tr> не является полностью block-элементом. Некоторое его поведение, такое как влияние на события мыши и подобное, не будут работать. Объясняется это еще тем (кроме откровенных необъяснимых глюков), что тег <tr> находится, как бы, "за" тегами <td>, которые расположены внутри него. Из-за этого, <td> перехватывают все события, в т.ч. и событие всплывания подсказки из атрибута title, и не дают им выполнится на элементе <tr>. Поэтому, вам придется присваивать это событие (в данном случае атрибут title) всем элементам <td>, а не <tr>.
Сделать это автоматически вы можете так (пример, возможно не рабочий):
// Находим в DOM элементы <tr>
var tableRows = document.getElementsByTagName("tr");
// Проходим по ним циклом
for(var i in tableRows)
{
   var tableRow = tableRows[i];
   // Получаем атрибут title (если есть)
   var rowTitle  = tableRow.getAttribute("title") && tableRow.title && false;
   // Если что-то получено, проходим по детям элемента <tr>
   if(rowTitle !== false)
   {
      var tableCell = tableRow.firstChild;
      while(tableCell != NULL)
      {
          if(tableCell.nodeName != 'TD')
              continue;
          // Если есть внутри элемент TD - ставим title ему
          try{
             tableCell.setAttribute("title", rowTitle);
          } catch(e) {
             tableCell.title = rowTitle;
          }
          tableCell = tableCell.nextSibling;
      }
   }
}


Не ручаюсь, что код сразу заработает (так в браузере и писал), но пищу для размышлений должен дать - в этом направлении придётся поработать. Кстати, этот скрипт нужно выполнять, когда вся страница загружена в браузер, например по событиям window.onLoad или document.body.onLoad.
Ответить с цитированием