Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: для новичков > Не могу присвоить событие всем img на странице


Автор: DimanLin 6.11.2008, 15:56
function create_evens()
{
 var ch = 0;
  for(ch;ch<document.images.length;ch++)
      {
          document.images[ch].onmouseover = mm(this);
      }
}

function mm(elem)
{
           alert(elem.alt);
}

Вот что в коде:
<body bgcolor="white" onLoad = "create_evens()">
.....

Должно присвоиться событие onmouseover = mm(this) всем элементам img на странице.
Это не происходит, вместо этого после полной загрузки страници, на экран всплывают алерты с  надписью "undefined". Несмотря на то, что мышка за пределами браузера.

Автор: bars80080 6.11.2008, 16:01
тебе надо функцию не выполнить, а присвоить её:

Код

document.images[ch].onmouseover = function(){mm(this);};


Автор: DimanLin 6.11.2008, 16:46
function create_evens()
{
 var ch = 0;
 
  for(ch;ch<document.images.length;ch++)
      {
          document.images[ch].onmouseover = function(){over(this,event);}; //!!!!!!!
          document.images[ch].onmouseout = function(){out(this);};
      }
}

Также хочется получать объект event в функцию over.
FF ругается, что обект не определён.

Автор: Samotnik 6.11.2008, 19:39
DimanLin, ты какой event   хочеш ?
может этот ?
Код

window.event


Автор: DimanLin 8.11.2008, 16:56
Мне нужен тот объект у которого есть свойство pageY.
alert(e) в функции over(obj,e) говорит, что объект не определён. =(

Код

function create_evens()
{
 var ch = 0;
 
  for(ch;ch<document.images.length;ch++)
      {
          document.images[ch].onmouseover = function(){over(this,window.event);};
          document.images[ch].onmouseout = function(){out(this);};
      }
}

var status_izo = 0;

function over(obj,e)
{

           if(obj.alt.length > 0)
           {
               if(navigator.appName != "Microsoft Internet Explorer")
                {
                    alert(e);
                    document.getElementById('regdiv').style.top = e.pageY + 20 + "px";
                    document.getElementById('regdiv').style.left = e.pageX + 20 + "px";
                }
                else
                {
                    var oCanvas =  document.getElementsByTagName((document.compatMode && document.compatMode == "CSS1Compat") ? "HTML" : "BODY")[0];
                    document.getElementById('regdiv').style.top = (oCanvas.scrollTop + e.clientY + 20) + "px";
                    document.getElementById('regdiv').style.left = (oCanvas.scrollLeft + e.clientX + 20) + "px";
                }
               document.getElementById("regdiv").innerHTML = obj.alt;
           }


}

Автор: IDVsbruck 8.11.2008, 17:04
Немного не так ...
События назначаются следующим образом:
Код
{...}.onmouseover = function(event) {over(event)};
...
function over(_event) {
    var event = _event || window.event;    // нужно для кроссбраузерности
    ...
    // дальше имеем дело с event, у которой есть параметры, в том числе и pageY
}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)