DOM+JS, а IE как всегда подкачал. Нужна помощь.

AM
На сайте с 04.11.2003
Offline
57
447

Здравствуйте, уважаемые.


<html>
<head>
<script>
function fillAttr()
{
var attr;
var allCells=document.getElementsByTagName('td');
for (var i=0; i<allCells.length; i++)
{
attr=document.createAttribute('onmouseover');
attr.value="doSomething(this.id);";
allCells.setAttributeNode(attr);
allCells.id="cell"+i;
}
}
function doSomething(id)
{
alert(id);
}
</script>
<script>
window.onload = function()
{
fillAttr();
}
</script>
</head>
<body>
<table>
<tbody>
<tr>
<td>blan</td>
<td>blah</td>
<td>blah</td>
</tr>
</tbody>
</table>
</body>
</html>

onmouseover работает везде, кроме IE

DOM inspector показывает, что у td оно есть

может сталкивался кто?

Shtogrin
На сайте с 02.11.2006
Offline
95
#1

       {

allCells.id="cell"+i;
allCells.onmouseover=function() {doSomething(this.id);};
/*
attr=document.createAttribute('onmouseover');
attr.value="doSomething(this.id);";
allCells.setAttributeNode(attr);
*/
}

или через e.target / e.srcElement в самом обработчике получать объект для события

www.shtogrin.com (http://www.shtogrin.com/). Канцтовары (http://www.invit.com.ua/). 1С Бухгалтерия (http://account.kiev.ua/).
Kolyaj
На сайте с 28.03.2006
Offline
69
#2

Вместо


attr=document.createAttribute('onmouseover');
attr.value="doSomething(this.id);";
allCells.setAttributeNode(attr);
allCells.id="cell"+i;


allCells.onmouseover = (function(id) { return function() { doSomething(id); }; })('cell' + i);
allCells.id="cell"+i;

P.S. Не проверял :)

WebSee
На сайте с 12.11.2007
Offline
66
#3

http://webo.in/articles/habrahabr/04-speed-up-events-handlers/

Может поможет...

А вообще бля ФФ и ИЕ по разному обработки событий добавляются, для вашего случая:


<html>
<head>
<script>
function fillAttr()
{
var attr;
var allCells=document.getElementsByTagName('td');
for (var i=0; i<allCells.length; i++)
{
allCells.setAttribute('onmouseover', 'return doSomething(this)'); // для ФФ
if (allCells.attachEvent) allCells.attachEvent('onmouseover', doSomething); // для ИЕ
allCells.id="cell"+i;
}
}
function doSomething(elem)
{
if (elem.srcElement) elem = event.srcElement;
alert(elem.id);
}
</script>
<script>
window.onload = function()
{
fillAttr();
}
</script>
</head>
<body>
<table>
<tbody>
<tr>
<td>blan</td>
<td>blah</td>
<td>blah</td>
</tr>
</tbody>
</table>
</body>
</html>
Встань и иди!
AM
На сайте с 04.11.2003
Offline
57
#4

спасибо, работает

P
На сайте с 08.03.2007
Offline
250
#5

И чего только люди не выдумывают, лишь бы jQuery не использовать :)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий