Не работает код
Добрый день. Я не силен в 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, время: 16:53. |