内联 JavaScript 处理器

非 Y 不嫁゛ 提交于 2019-12-01 16:51:43

HTML 中存在着真实的 JavaScript 代码

<!DOCTYPE html>
<html lang="zh-CN">
  <head>
    <meta charset="utf-8">
    <title>使用 JavaScript 的示例</title>
    <script>
        function createParagraph() {
           const para = document.createElement('p');
           para.textContent = '你点击了这个按钮!';
           document.body.appendChild(para);
          }
    </script>
  </head>
  <body>
    <button onclick="createParagraph()">点我呀</button>
  </body>
</html>

<button> 元素中包含了一个内联的 onclick 处理器,使得函数在按钮被按下时运行。效率低下。对于每个需要应用 JavaScript 的按钮,你都得手动添加 onclick="createParagraph()"属性。

可以使用纯 JavaScript 结构来通过一个指令选取所有按钮

document.addEventListener("DOMContentLoaded", function() {
  . . .
});

这是一个事件监听器,它监听浏览器的 "DOMContentLoaded" 事件,即 HTML 文档体加载、解释完毕事件。事件触发时将调用 " . . ." 处的代码,从而避免了错误发生

DOMContentLoaded这个事件可以替代window.onload事件,创建一个匿名函数。querySelectorAll获取标签button的句柄,然后绑定createParagraph()函数。

<!DOCTYPE html>
<html lang="zh-CN">
  <head>
    <meta charset="utf-8">
    <title>使用 JavaScript 的示例</title>
    <script>
      document.addEventListener("DOMContentLoaded", function() {

        function createParagraph() {
          const para = document.createElement('p');
          para.textContent = '你点击了这个按钮!';
          document.body.appendChild(para);
        }
        
        const buttons = document.querySelectorAll('button');
        for(let i = 0; i < buttons.length ; i++) {
          buttons[i].addEventListener('click', createParagraph);
        }


      });
    </script>
  </head>
  <body>
    <button>点我呀</button>
  </body>
</html>
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!