使用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

相关推荐

  • JavaScript语言的解构(Destructuring)语法

    可迭代对象解构是按位置的,而对象字面量解构是按命名的。 注意:解构语法是并行的。 1.可迭代对象解构 1.1用于变量赋值 左侧的变量还支持占位语法。 注意:左侧不是稀疏数组语法,是占位语法。 1.2用于函数形参 具体参考“用于变量赋值”章节。 2.对象字面量解构 2.1用于变量赋值 2.2用于函数形参 具体参考“用于变…

    JavaScript经验 2025年4月3日
    0660
  • JavaScript语言的展开(Spread)语法

    1.展开可迭代对象 1.1用于变量赋值 1.2用于函数实参 具体参考“用于变量赋值”章节。 2.展开对象字面量 2.1用于变量赋值 2.2用于函数实参 JavaScript 语言不支持用于函数实参。

    JavaScript经验 2025年4月3日
    0620
  • JavaScript语言的成员名

    支持类的成员:静态字段、静态访问器属性、静态方法、实例字段、实例访问器属性、实例方法。 支持对象字面量的成员:数据属性、访问器属性、方法。 成员名的类型只可以为 字符串类型(包括空字符串) 或者 符号类型。 注意:此处成员名用于“成员声明”的时候,而不是“访问成员”的时候。 实际上,比较两个成员名是否相等采用的是相等 …

    JavaScript经验 2025年4月3日
    0560

发表回复

登录后才能评论