Не работает код
Добрый день. Я не силен в Javascript, знаю лишь основы, но для PHP приложения надо было написать небольшой код. Написанный код работает во всех браузерах, но отказывается работать в IE.
Собственно код: function ou(d) { d.style.backgroundColor='#bebebe'; } function ov(d) { d.style.backgroundColor='#cdcdcd'; } function oc(d) { var at = d.childNodes[5].innerHTML; var wd = d.childNodes[3].innerHTML; document.tform.articul.value = at; document.getElementById('image1').src = 'images/'+at+'.jpg'; document.tform.scrl.value = parseInt(document.getElementById('scdiv').scrollTop); } в таблице у строк установлены обработчики событий: <tr onMouseOver="on(this);" onMouseOut="ou(this);" onClick="oc(this);"> так вот события onMouseOver и onMouseOut обрабатывются нормально, а обработчик onClick не обрабатывается. Важна эта строчка: document.tform.articul.value = at; Именно в ней заносятся данные в hidden input. Заранее спасибо. |
alert() в oc(d) добавьте и проверьте, что получается, что нет, также в консоль посмотрите, может ошибка где
и такие вещи делаются через делегирование (target), а не на каждую строку по обработчику выложите тестовый пример с возможностью запуска [html run] |
Цитата:
var at = d.childNodes[5].innerHTML; var wd = d.childNodes[3].innerHTML; |
<style> td, table { border: solid 1px; cursor: pointer; color: navy; } tr { background: lightgrey; } </style> <table> <tr> <td>11</td> <td>12</td> <td>13</td> </tr> <tr> <td>21</td> <td>22</td> <td>23</td> </tr> <tr> <td>31</td> <td>32</td> <td>33</td> </tr> </table> <script> window.onload = function () { var table = document.body.children[0]; table.onmouseover = function (e) { e = e || event; var target = e.target || e.toElement; if (target.tagName == 'TD') { target.parentNode.style.background = 'lightgreen'; } } table.onmouseout = function (e) { e = e || event; var target = e.target || e.fromElement; if (target.tagName == 'TD') { target.parentNode.style.background = 'lightgrey'; } } table.onclick = function (e) { e = e || event; var target = e.target || e.srcElement; if (target.tagName == 'TD') { alert(target.innerHTML) } } } </script> |
Все уже разобрался. Оказывается IE нумерует индексы по своему, нежели остальные браузеры :) devote, ты был прав)
|
Добавь <tbody> в таблицу, должно стать одинаково.
|
Часовой пояс GMT +3, время: 23:05. |