За последние 24 часа нас посетили 17233 программиста и 1246 роботов. Сейчас ищут 964 программиста ...

this.some_subobject...

Тема в разделе "JavaScript и AJAX", создана пользователем bruno, 23 май 2007.

  1. bruno

    bruno Активный пользователь

    С нами с:
    9 дек 2006
    Сообщения:
    122
    Симпатии:
    0
    Есть таблицас 2 ячейками. В ней пишу:
    Код (Text):
    1.  
    2. OnМousеОver="this.left_td.style.backgroundColor = 'red'"

    Тоесть, при наводке на таблицу нужно изменить фон только левой её ячейки(у неё id="left_td")
    Но не выходит, через sourceIndex тоже не выходит.
    В чем ошибка? Возможно ли вообще такое обращение к елементу?

    Примечание: на странице может быть 20 таблиц с однаковими id="left_td", поэтому getElementbyId - не катит.
    Помогите плз!
    Заранее спасибо! [/code]
     
  2. AlexGousev

    AlexGousev Активный пользователь

    С нами с:
    25 мар 2006
    Сообщения:
    1.505
    Симпатии:
    0
    Адрес:
    Москва
    На странице не может быть более одного элемента с одним и тем же идентификатором: он для того и уникальный идентификатор.

    HTML:
    1. <tr onmouseover="this.firstChild.style.backgroundColor = 'red';"><td>Left</td><td>center</td><td>right</td></tr>
     
  3. bruno

    bruno Активный пользователь

    С нами с:
    9 дек 2006
    Сообщения:
    122
    Симпатии:
    0
    AlexGousev, к сожелению не катит
    Код (Text):
    1.  
    2. <table onmouseover="this.firstChild.style.backgroundColor = 'red';">
    3.         <tr>
    4.           <td width="10">Эта ячейка должна подсвечиватса при наводке на таблицу</td>
    5.           <td>22</td>  
    6.           <td>333</td>
    7.         </tr>
    8. </table>
     
  4. AlexGousev

    AlexGousev Активный пользователь

    С нами с:
    25 мар 2006
    Сообщения:
    1.505
    Симпатии:
    0
    Адрес:
    Москва
    bruno
    Событие вешается на tr, а не на table
     
  5. vasa_c

    vasa_c Активный пользователь

    С нами с:
    22 мар 2006
    Сообщения:
    1.760
    Симпатии:
    0
    Адрес:
    гор.Ленинград
    [js]this.firstChild.style[/js]
    Так делать не нужно, т.к. первым ребенком может пролезть пустой текстовый нод.
    В общем плане делать нужно так:
    [js]this.getElementsByTagName("td").item(0);[/js]
    а для строки таблицы, так и вообще:
    [js]this.cells[0];[/js]
     
  6. AlexGousev

    AlexGousev Активный пользователь

    С нами с:
    25 мар 2006
    Сообщения:
    1.505
    Симпатии:
    0
    Адрес:
    Москва
    Не может. У tr не может быть подчиненных текстовых нодов. Браузер должен вынимать их из потока и ставить перед таблицей.

    Забыл я, что есть на этом свете IE. Действительно, у него отображение не соответствует структуре. Текст, отображает перед таблицей, а в DOM'е этот текст таки оставляет внутри tr'a.
     
  7. vasa_c

    vasa_c Активный пользователь

    С нами с:
    22 мар 2006
    Сообщения:
    1.760
    Симпатии:
    0
    Адрес:
    гор.Ленинград
    То что браузер должен делать и то что будет делать каждый конкретный, это разные вещи :) лучше не рисковать.
    Кстати, в этом случае не уверен, что должен. DOM это в первую очередь отображает XML-структуру без привязки к тому, таблица это или не таблица. В том порядке в каком идут в коде, в том и должны быть в дереве. А уже, как это отрисовывать по правилам HTML, другое дело.