Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.07.2012, 09:08
Аспирант
Отправить личное сообщение для JustCrazy Посмотреть профиль Найти все сообщения от JustCrazy
 
Регистрация: 20.07.2012
Сообщений: 64

Корректная обработка команды OnMouseOver
Доброго времени суток всем, у меня вопрос такого характера:
есть таблица, допустим 2 ячейки, когда курсор на одной, всплывает подсказка с изображением, когда курсор на другой - другая подсказка с изображением. Изображение припаять получилось, а вот с текстом беда...
<script type="text/javascript" >
function name(file_name)
{
    img = document.createElement('div');
    document.body.appendChild(img);
    img.innerHTML = '<img src='+file_name+' />';
    img.style.position = 'absolute';
    img.style.background = '#FFFFFF';
    img.style.border = 'solid 1px #346fdc';
    img.style.padding = '2px';
    move();
}
function move(e)
{
    e = e || window.event
    if (e.pageX == null && e.clientX != null )
        {
            var html = document.documentElement
            var body = document.body
            e.pageX = e.clientX + (html && html.scrollLeft || body && body.scrollLeft || 0) - (html.clientLeft || 0)
            e.pageY = e.clientY + (html && html.scrollTop || body && body.scrollTop || 0) - (html.clientTop || 0)
        }
    img.style.left = e.pageX + 15 + 'px';
    img.style.top = e.pageY + 15 + 'px';
}
function out()
{
    document.body.removeChild(img);
}
</script>

дальше собственно к ячейке делаю привязку

<td width="50%" onmouseover="name('image.jpg')" onmousemove="move(event)" onmouseout="out()" ></td>


текст привязать пробовал так:
img.innerHTML = 'текст <img src='+file_name+' />';

но если у меня в таблице ячеек 500, не буду же я к каждой ячейке отдельную функцию делать...
помогите доразобраться
Ответить с цитированием
  #2 (permalink)  
Старый 20.07.2012, 09:46
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Вещайте обработчики на саму таблицу (см. делегирование событий).
Ответить с цитированием
  #3 (permalink)  
Старый 20.07.2012, 15:47
Аспирант
Отправить личное сообщение для JustCrazy Посмотреть профиль Найти все сообщения от JustCrazy
 
Регистрация: 20.07.2012
Сообщений: 64

Сообщение от bes
Вещайте обработчики на саму таблицу (см. делегирование событий)
а можно немного поподробнее ? мануалы почитал, на бональных примерах вроде все просто, а как сам что то пытаюсь - темный лес..
Ответить с цитированием
  #4 (permalink)  
Старый 20.07.2012, 18:34
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

События всплывают поэтому можно обработать их не на самих элементах, а на родителе.
http://learn.javascript.ru/event-delegation
<style>
  td {
    border: solid 1px;
    cursor: pointer;
  }
</style>

<table id="table">
  <tr>
    <td>11</td>
    <td>12</td>
  </tr>
  <tr>
    <td>21</td>
    <td>22</td>
  </tr>
</table>

<script>
window.onload = function () {
  var table = document.getElementById('table');

  table.onclick = function (e) {
    e = e || event;
    var target = e.target || e.srcElement;
    if (target.parentNode.tagName == 'TR') {
      alert(target.innerHTML);
    }
  }

}
</script>
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблемы с событием onmouseover в разных браузерах jsuse Общие вопросы Javascript 4 29.11.2011 18:30
OnMouseOver и Дети Элемента Ваcя Общие вопросы Javascript 7 21.11.2011 12:42
FireFox: onmouseover не работает при зажатой кнопке мыши no. Общие вопросы Javascript 4 19.08.2008 13:43