使用JavaScript的三种方式

1.内联(Inline)方式

内联(Inline)方式,又称为行内方式。往往用于单个元素。

<!DOCTYPE html>
<html lang="en">
  <head>
  </head>
  <body>
    <p id="demo">This is a paragraph</p>
    <button type="button" onclick="document.getElementById('demo').innerHTML = 'Paragraph changed'">Try it</button>
  </body>
</html>

2.内部(Internal)方式

往往用于单个网页。

<!DOCTYPE html>
<html lang="en">
  <head>
  </head>
  <body>
    <p id="demo">This is a paragraph</p>
    <button type="button" onclick="myFunction()">Try it</button>
    <script>
      function myFunction() {
        document.getElementById("demo").innerHTML = "Paragraph changed";
      }
    </script>
  </body>
</html>

3.外部(External)方式

往往用于所有网页。

//目录结构
demo/
  index.html
  myscript.js
//index.html
<!DOCTYPE html>
<html lang="en">
  <head>
  </head>
  <body>
    <p id="demo">This is a paragraph</p>
    <button type="button" onclick="myFunction()">Try it</button>
    <script src="myscript.js"></script>
  </body>
</html>
//myscript.js(注意:不能包含<script>元素)
function myFunction() {
  document.getElementById("demo").innerHTML = "Paragraph changed";
}

4.优先级

比如上面的示例中 myFunction() 事件处理程序函数,当同时存在多种使用 JavaScript 的方式中存在相同的函数名时,则优先级如下:

内联方式优先级最高。

其次,内部方式和外部方式的优先级取决于它们放置在 <head> 元素或者 <body> 元素中的前后顺序,后面的永远覆盖前面的。情形如下:

  • 后面的内部方式优先级 > 前面的内部方式。
  • 后面的内部方式优先级 > 前面的外部方式。
  • 后面的外部方式优先级 > 前面的外部方式。
  • 后面的外部方式优先级 > 前面的内部方式。

5.<script>元素位置

注意:<script> 元素只支持内部方式或外部方式。

过去,所有 <script> 元素都被放在 <head> 元素内,如下所示:

<!DOCTYPE html>
<html lang="en">
  <head>
    <!-- 这里是外部CSS -->
    <script src="myScript1.js"></script>
    <script src="myScript2.js"></script>
  </head>
  <body>
    <!-- 这里是页面内容 -->
  </body>
</html>

这样做的好处是把外部的 CSS 和 JavaScript 文件都集中放在一起,缺点就是,必须把所有的 </head> 标签之前的 JavaScript 文件都下载、解析和解释执行完成后,才能开始渲染 <body> 标签后的页面内容。对于需要很多 JavaScript 的页面,这会导致页面渲染明显延迟,在此期间浏览器窗口完全空白。为了解决此问题,可将所有或者部分 <script> 元素放在结束标签 </body> 的紧挨着前面,如下所示:

<!DOCTYPE html>
<html>
  <head>
    <!-- 这里是外部CSS -->
  </head>
  <body>
    <!-- 这里是页面内容 -->
    <script src="myScript1.js"></script>
    <script src="myScript2.js"></script>
  </body>
</html>

原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/experience/javascriptexp/31817.html

(0)
huoxiaoqiang的头像huoxiaoqiang
上一篇 2023年10月10日 12:58
下一篇 2023年10月11日 01:09

相关推荐

  • Node.js包中的模块的解析规则

    当我们开发的应用在浏览器环境中运行时,必须使用 ES 模块规范。 当我们开发的应用在服务器环境中运行时,既可以使用 ES 模块规范,又可以使用 Node.js 风格的 CommonJS 模块规范,本文介绍 Node.js 包中的模块的解析规则。 1.包入口点 在一个包的 package.json 文件里,”main” …

    JavaScript经验 2024年2月15日
    06970
  • type=”module”、defer、async属性的区别

    当 <script> 标签无 type=”module” 属性时,defer 和 async 属性都只可以被用在 <script> 元素的外部方式,如果被用在 <script> 元素的内部方式,则会被忽略。 当 <script> 标签有 type=”module” 属性时…

    JavaScript经验 2024年1月25日
    06970
  • JavaScript事件处理程序(又称为事件监听器)详解

    1.概念 负责处理或响应事件而调用的函数称为 事件处理程序(又称为 事件监听器)。 概念 示例 事件类型(又称为 事件名称) “click” 事件目标 <button> 事件处理程序属性名 onclick 事件处理程序(又称为 事件监听器) myFunction() 事件对象 event 2.HTML事件处…

    JavaScript经验 2023年5月11日
    05690

发表回复

登录后才能评论