javascript - JavaScript 中的事件处理是如何工作的?

标签 javascript dom-events

首先我很抱歉,因为我确信这个问题已经被问过很多次了,我只是不知道如何搜索这个问题。

<!doctype html>
<html lang="en">
    <head>
        <meta charset="utf-8">
    </head>
    <body>

        <form>
            <button type="button" onclick="hello()">test1</button>
            <button type="button" id="test2">test2</button>
            <h1 id='myText'></h1>

        <script type="text/javascript">
            function hello() {
                document.getElementById('myText').innerHTML = 'test1';
            }
            document.getElementById('test2').onclick = function(event) {
                document.getElementById('myText').innerHTML = 'test2';
            }   
        </script>
        </form>     
    </body>
</html>

这是我的代码。在此版本之前,整个脚本标签位于头部区域内,并且只有 test1工作过,test2什么也没做。

  1. 您能指出在哪里可以阅读到为什么会这样吗?
  2. 此外,这两种方法中是否有首选方法来触发事件?

最佳答案

这是处理元素的顺序。

简单来说:<head> 中的内容在 <body> 中的内容之前加载同样,在 <body> 顶部的内容将在 <body> 末尾的内容之前加载。因此,当您尝试获取 ID 为 test2 的元素时,您的 #test2事件处理程序仅在 #test2 时才起作用。按钮已在您的 <script> 之前加载;否则此时页面上根本不存在它。

关于javascript - JavaScript 中的事件处理是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41956874/

相关文章:

javascript - 数据列表和结果重定向有问题

javascript - 如何刷新 Iframe url 并显示加载图像

javascript - Javascript 框架的自定义事件日志记录

javascript - 如何在浏览器开始下载资源之前操作 DOM?

javascript - request-promise-native 的替代方案

javascript - Highstock 共享工具提示多个系列 - 不在点时显示行数据

javascript - 字母 "pyramid"

javascript - 如何设置合适的图像取决于用户代理类型

javascript - 为 longtap 创建一个自定义事件,例如 'click'

javascript - 按下按键时发出声音的 JavaScript 事件