首页 > 编程语言 >如何在HTML中使用JavaScript:从基础到高级的全面指南!

如何在HTML中使用JavaScript:从基础到高级的全面指南!

时间:2024-04-18 15:15:48浏览次数:26  
标签:指南 标签 代码 JavaScript HTML 解析 页面

JavaScript是一种轻量级的编程语言,通常用于网页开发,以增强用户界面的交互性和动态性。然而在HTML中,有多种方法可以嵌入和使用JavaScript代码。本文就带大家深入了解如何在HTML中使用JavaScript。

一、使用 script 标签

要在HTML中使用JavaScript,我们需要使用<script>标签。这个标签可以放在<head><body>部分,但通常我们会将其放在<body>部分的底部,以确保在执行JavaScript代码时,HTML文档已经完全加载。

使用 <script> 标签有两种方式:

直接在页面中嵌入 JavaScript 代码和包含外部 JavaScript 文件。

包含在 <script> 标签内的 JavaScript 代码在浏览器总按照从上至下的顺序依次解释。

所有 <script> 标签都会按照他们在 HTML 中出现的先后顺序依次被解析。

HTML为 <script> 定义了几个属性:

1)async: 可选。表示应该立即下载脚本,但不妨碍页面中其他操作。该功能只对外部 JavaScript 文件有效。

如果给一个外部引入的js文件设置了这个属性,那页面在解析代码的时候遇到这个<script>的时候,一边下载该脚本文件,一边异步加载页面其他内容。

2)defer: 可选。表示脚本可以延迟到整个页面完全被解析和显示之后再执行。该属性只对外部 JavaScript 文件有效。

3)src: 可选。表示包含要执行代码的外部文件。

4)type: 可选。表示编写代码使用的脚本语言的内容类型,目前在客户端,type属性值一般使用 text/javascript。

不过这个属性并不是必需的,如果没有指定这个属性,则其默认值仍为text/javascript。

1.1 直接在页面中嵌入JavaScript代码

内部JavaScript是将JavaScript代码放在HTML文档的<script>标签中。这样可以将JavaScript代码与HTML代码分离,使结构更清晰,易于维护。

在使用<script>元素嵌入JavaScript代码时,只须为<script>指定type属性。然后,像下面这样把JavaScript代码直接放在元素内部即可:

<script type="text/javascript">
     function sayHi(){
          alert("Hi!");     
}
</script>

如果没有指定script属性,则其默认值为text/javascript。

包含在<script>元素内部的JavaScript代码将被从上至下依次解释。在解释器对<script>元素内部的所有代码求值完毕以前,页面中的其余内容都不会被浏览器加载或显示。

在使用<script>嵌入JavaScript代码的过程中,当代码中出现"</script>"字符串时,由于解析嵌入式代码的规则,浏览器会认为这是结束的</script>标签。可以通过转义字符“\”写成</script>来解决这个问题。

1.2包含外部JavaScript文件

外部JavaScript是将JavaScript代码放在单独的.js文件中,然后在HTML文档中通过<script>标签的src属性引用这个文件。这种方法可以使代码更加模块化,便于重用和共享。

如果要通过<script>元素来包含外部JavaScript文件,那么src属性就是必需的。

这个属性的值是一个指向外部JavaScript文件的链接。

<script type="text/javascript" src="example.js"></script>

外部文件example.js将被加载到当前页面中。

外部文件只须包含通常要放在开始的之间的那些JavaScript代码即可。

与解析嵌入式JavaScript代码一样,在解析外部JavaScript文件(包括下载该文件)时,页面的处理也会暂时停止。

注意: 带有src属性的<script>元素不应该在其<script></script>标签之间再包含额外的JavaScript代码。如果包含了嵌入的代码,则只会下载并执行外部脚本文件,嵌入的代码会被忽略。

通过<script>元素的src属性还可以包含来自外部域的JavaScript文件。它的src属性可以是指向当前HTML页面所在域之外的某个域中的完整URL。

<script type="text/javascript" src="http://www.somewhere.com/afile.js"></script>

于是,位于外部域中的代码也会被加载和解析。

1.3 标签的位置

在HTML中,所有的<script>标签会按照它们出现的先后顺序被解析。在不使用defer和async属性的情况下,只有当前面的<script>标签中的代码解析完成后,才会开始解析后面的<script>标签中的代码。

通常,所有的<script>标签应该放在页面的标签中,这样可以将外部文件(包括CSS和JavaScript文件)的引用集中放置。

然而,如果将所有的JavaScript文件都放在标签中,会导致浏览器在呈现页面内容之前必须下载、解析并执行所有JavaScript代码,这可能会造成明显的延迟,导致浏览器窗口在加载过程中出现空白。

为了避免这种延迟问题,现代Web应用程序通常会将所有的JavaScript引用放置在<body>标签中的页面内容的后面。这样做可以确保在解析JavaScript代码之前,页面的内容已经完全呈现在浏览器中,从而加快了打开网页的速度。

二、执行JavaScript 程序

JavaScript 解析过程包括两个阶段:预处理(也称预编译)和执行。

  • 在编译期,JavaScript 解析器将完成对 JavaScript 代码的预处理操作,把 JavaScript 代码转换成字节码;

  • 在执行期,JavaScript 解析器把字节码生成二进制机械码,并按顺序执行,完成程序设计的任务。

1、执行过程

HTML 文档在浏览器中的解析过程是:按照文档流从上到下逐步解析页面结构和信息。

JavaScript 代码作为嵌入的脚本应该也算做 HTML 文档的组成部分,所以 JavaScript 代码在装载时的执行顺序也是根据 <script> 标签出现的顺序来确定。

想要快速入门前端开发吗?推荐一个前端开发基础课程,这个老师讲的特别好,零基础学习无压力,知识点结合代码,边学边练,可以免费试看试学,还有各种辅助工具和资料,非常适合新手!点这里前往学习哦!

2、预编译

当 JavaScript 引擎解析脚本时候,他会在与编译期对所有声明的变量和函数预先进行处理。当 JavaScript 解析器执行下面脚本时不会报错。

alert(a);    //返回值 undefined
var a = 1;
alert(a);    //返回值 1

由于变量声明是在预编译期被处理的,在执行期间对于所有的代码来说,都是可见的,但是执行上面代码,提示的值是 undefined 而不是 1。

因为变量初始化过程发生在执行期,而不是预编译期。在执行期,JavaScript 解析器是按照代码先后顺序进行解析的,如果在前面代码行中没有为变量赋值,则 JavaScript 解析器会使用默认值 undefined 。

由于第二行中为变量 a 赋值了,所以在第三行代码中会提示变量 a 的值为 1,而不是 undefined。

fun();    //调用函数,返回值1
function fun(){
    alert(1);
}

函数声明前调用函数也是合法的,并能够正确解析,所以返回值是 1。但如果是下面这种方式则 JavaScript 解释器会报错。

fun();    //调用函数,返回语法错误
var fun = function(){
    alert(1);
}

上面的这个例子中定义的函数仅作为值赋值给变量 fun 。在预编译期,JavaScript 解释器只能够为声明变量 fun 进行处理,而对于变量 fun 的值,只能等到执行期时按照顺序进行赋值,自然就会出现语法错误,提示找不到对象 fun。

总结: 声明变量和函数可以在文档的任意位置,但是良好的习惯应该是在所有 JavaScript 代码之前声明全局变量和函数,并对变量进行初始化赋值。在函数内部也是先声明变量,后引用。

通过今天的分享,相信大家已经对JavaScript在HTML中的应用有了一定的了解。这只是冰山一角,JavaScript的潜力远不止于此。

希望这篇文章能激发大家对编程的热情,让我们一起在编程的世界里探索更多的可能性!

标签:指南,标签,代码,JavaScript,HTML,解析,页面
From: https://www.cnblogs.com/ydyxcode/p/18143515

相关文章

  • nginx + Markdown 博客指南
    最近写了点东西,在园子上发布了一下,同时在我自己的华为云服务器上也发布了(打钱!!或者,给点优惠券?)。欢迎大家有空看看。但是自己建站写博客,又懒得把Markdown转为HTML(因为有时候可以方便地改改内容),怎么办呢?Firefox的markdown插件我在本地预览Markdown时,由于不想安装额外的软件......
  • Perforce (P4)版本控制使用指南
    转载自:https://blog.csdn.net/zyhse/article/details/119083666以下为P4常规和一些必要操作如何达到同步?本质就是需要告诉P4你干了什么,然后P4再别人的机器上模拟你所做的操作操作的宗旨如果想让别人知道你的操作,就需要去主动通知✘31、登录账号密码相关信息会在入职......
  • 华为云CodeArts IDE For Python 快速使用指南
    本文分享自华为云社区《华为云CodeArtsIDEForPython快速使用指南》,作者:为云PaaS服务小智。CodeArtsIDE带有Python扩展,为Python语言提供了广泛的支持。Python扩展可以利用CodeArtsIDE的代码补全、验证、调试和单元测试等特性,与多种Python解释器协同工作,轻松切换包......
  • Hugging Face Transformers 萌新完全指南
    欢迎阅读《HuggingFaceTransformers萌新完全指南》,本指南面向那些意欲了解有关如何使用开源ML的基本知识的人群。我们的目标是揭开HuggingFaceTransformers的神秘面纱及其工作原理,这么做不是为了把读者变成机器学习从业者,而是让为了让读者更好地理解transformers从而能......
  • Python Flask+Pandas读取excel显示到html网页: CSS控制表格样式、表头文字居中
    前言全局说明CSS控制表格样式一、安装flask模块二、引用模块三、启动服务模块安装、引用模块、启动Web服务方法,参考下面链接文章:https://www.cnblogs.com/wutou/p/17963563Pandas安装https://www.cnblogs.com/wutou/p/17811839.htmlPandas官方API说明https://pand......
  • 洛谷题单指南-动态规划1-P1216 [USACO1.5] [IOI1994]数字三角形 Number Triangles
    原题链接:https://www.luogu.com.cn/problem/P1216题意解读:计算数字三角形最高点到最后一行路径之和最大值,典型线性DP。解题思路:设a[i][j]表示数字三角形的值,设dp[i][j]表示从最高点到第i行第j列路径之和的最大值,由于每一步可以走到左下方的点也可以到达右下方的点,所以dp[i][......
  • JavaScript初了解
    最近想写一个web应用,打算稍微学一下。本文是个人在学习过程中的笔记,目的是分享。本文的阅读对象是已经有一门编程语言的基础,想进一步大致了解JS语言的读者本文章不适合完全零基础且对前端毫无概念的伙伴。1、变量和数据类型//number数值型varmyNum=10//字符型varmyStr......
  • 通过innerHTML vue不起作用
    innerHTML 在Vue中直接使用可能不会如预期工作,因为Vue是数据驱动的,它期望你通过操作数据来更新视图,而不是直接操作DOM。当你使用 v-html 指令时,Vue会将内容作为HTML解析,但如果你直接修改DOM的 innerHTML,Vue就无法追踪变动了。解决方法:使用Vue的数据绑定功能......
  • Nacos安装指南
    1.Windows安装开发阶段采用单机安装即可。1.1.下载安装包在Nacos的GitHub页面,提供有下载链接,可以下载编译好的Nacos服务端或者源代码:GitHub主页:https://github.com/alibaba/nacosGitHub的Release下载页:https://github.com/alibaba/nacos/releases如图:1.2.解压将这个包解......
  • 通过前端事件获得控件所在页面html
    //输入框获取焦点事件functionhandleInputFocus(){ console.log('handleInputFocus2',event); letpgHtml=$(event.target).prop('ownerDocument').body.innerHTML;//jquery控件所在网页html(不知道为啥直接event点不出ownerDocument) letcurrHtml=$(event.target).pr......