【问题标题】:Event 'load' doesn't work on JavaScript事件“加载”不适用于 JavaScript
【发布时间】:2010-10-04 06:12:11
【问题描述】:

我尝试在文档加载时设置一个事件但不起作用... 我会放一个警告框,但从未见过...

document.addEventListener ("load",initEventHandlers,false);

function initEventHandlers ()
{
document.getElementbyId ('croixzoom').addEventListener ('click',fermezoom,false);
alert ("Hello, i\'m a eventHAndlers")   
}
function fermezoom (){
document.getElementbyId ('zoom').style.visibility = 'hidden';
document.getElementbyId ('fondzoom').style.visibility = 'hidden';
}

感谢您的帮助

【问题讨论】:

    标签: javascript events


    【解决方案1】:

    文档没有 onload / load 事件,请尝试将其附加到“窗口”:

    window.addEventListener ("load",initEventHandlers,false);
    

    【讨论】:

    • 这个不行,因为DOM还没有被加载,所以他不能使用document.getElementById()...
    • 不需要加载DOM就可以向窗口对象添加事件!
    • 我知道,但在 Gayell 编写的代码中,他从事件处理程序访问了 DOM,我认为在这种情况下,如果为窗口对象的加载事件触发事件处理程序,代码将不起作用
    • 但是你不知道他把脚本标签放在哪里了!如果它放在 的底部,那么该函数将正常工作...
    • @Marwan:你错了:window.onload 在 DOM 构建完成后触发 并且 外部资源被加载 - 这就是为什么有 DOMContentLoaded 和所有这些的原因onready() hacks:人们不想等到所有图片都加载完毕后才能修改 DOM...
    【解决方案2】:

    怎么样:

    window.onload = initEventHandlers;
    

    这对你有用。

    【讨论】:

      【解决方案3】:

      更新 作为建议,不能直接解决您的问题: 如果您还没有,您可能需要考虑使用框架。 也许看看jQuery,它应该可以减轻您尝试做的事情的痛苦。

      然后你可以把它包装成这样的语法:

       $(document).ready(function() {
         // put all your jQuery goodness in here.
       });
      

      您可能不希望在 Javascript 之上添加额外的层。

      希望对你有帮助!

      【讨论】:

      • 啊,是的,所有问题的答案都是“使用框架”。这可能有助于提高工作效率,但不会帮助他了解事件在 Javascript 中的工作原理吗?
      • 与一个轻量级框架相比,了解事件在 javascript 中的工作方式并不是那么有用(尤其是跨浏览器的差异)。但我必须记下这一点:人们要么忘记,要么忽略,要么不知道 ready() 和 load() 之间的区别。
      • javascript 中的事件是基本的。跨浏览器问题也没有那么复杂。也许我们都应该使用 GWT 而完全忘记 javascript?
      • Rory,很公平,它不会教太多关于 Javascript 事件的知识。这就是为什么我说“你可能要考虑使用一个框架”。因为试图帮助我找到的帮助而受到责备总是好的。
      • Cletus,你说得对,我不是在谈论 document.onload ......但他正在尝试使用 document.getElementbyId - 除非他正在注入内容,否则我将暗示他想要操纵 DOM。我只是为他的做事方式提供了一个潜在的替代方案。它几乎不能保证降价!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-07
      • 2011-05-16
      相关资源
      最近更新 更多