Javascript-форум (https://javascript.ru/forum/)
-   Internet Explorer (https://javascript.ru/forum/css-html-internet-explorer/)
-   -   Не работает код (https://javascript.ru/forum/css-html-internet-explorer/31198-ne-rabotaet-kod.html)

Kendrick 29.08.2012 21:24

Не работает код
 
Добрый день. Я не силен в 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.
Заранее спасибо.

bes 29.08.2012 22:20

alert() в oc(d) добавьте и проверьте, что получается, что нет, также в консоль посмотрите, может ошибка где
и такие вещи делаются через делегирование (target), а не на каждую строку по обработчику
выложите тестовый пример с возможностью запуска [html run]

devote 29.08.2012 22:34

Цитата:

Сообщение от Kendrick
а обработчик onClick не обрабатывается.

дык может потому что не может найти детей под номерами 5 и 3?
var at = d.childNodes[5].innerHTML;
var wd = d.childNodes[3].innerHTML;

bes 29.08.2012 22:53

<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>

Kendrick 03.09.2012 00:48

Все уже разобрался. Оказывается IE нумерует индексы по своему, нежели остальные браузеры :) devote, ты был прав)

шамаш 12.09.2012 16:14

Добавь <tbody> в таблицу, должно стать одинаково.


Часовой пояс GMT +3, время: 12:38.