繁体   English   中英

分配'onmouseover'事件处理程序

[英]Assign the 'onmouseover' event handler

请告诉我这段代码有什么问题:

 <script type="text/javascript" >

function createimg()
       {
         var img = new Image();
       img.src='link/to/image';
       img.alt='Next image';  img.id = 'span1'; img.style.zIndex = 10;
       img.style.position = 'absolute';  img.style.display='block'; img.style.top = '130px';
       img.style.padding='10px'; img.style.left='440px';    img.className ='dynamicSpan';
        document.body.appendChild(img);
        return img;
        }

    function al()
    {
     alert('loaded');
    }
   a = createimg();

    a.onmouseover = al();

</script>

具体到最后一部分,我试图分配a的'onmouseover'事件处理程序,它是一个图像元素。 它不会出于某种原因分配此事件处理程序,而只是在页面加载时执行该函数。

怎么了?

托尼

a.onmouseover = al;

当您编写al()您正在现场调用该函数并将该函数的返回值 (由于没有return语句而未定义)分配给a.onmouseover 相反,您想要分配函数本身,因此您只需要删除括号。

好吧,对于初学者来说,你的代码格式不是那么易于阅读的方式。

但你的问题在这里:

a.onmouseover = al();

你真正想要的是:

a.onmouseover = al;

()运算符调用该函数。 因此表达式al()等于执行函数al的结果 - 这意味着必须在其结果(在这种情况下, undefined )之前执行al函数才能将其分配给a.onmouseover

相比之下,如果您只使用al ,则表达式等于函数对象 al ,这是您实际要分配给事件的对象。 在这种情况下,当触发事件时,执行al函数。

尝试

a.onmouseover = al;

代替

a.onmouseover = al();
    a.onmouseover = al;

更换:

a.onmouseover = al();

附:

a.onmouseover = al;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM