JavaWeb学习(四)

news/2025/3/4 11:21:13/文章来源:https://www.cnblogs.com/victoria6013/p/18746995

JavaWeb学习(四):JavaScript

目录
  • JavaWeb学习(四):JavaScript
    • 概念
    • JS 引入方式
    • JS 基础语法
    • JS 函数
    • JS 对象
    • JS 事件监听

本文为个人学习记录,内容学习自 黑马程序员


概念

  • JavaScript,简称 JS,是一门跨平台、面向对象的脚本语言,用于控制网页行为
  • JavaScript 和 Java 是完全不同的语言,但是基础语法类似
  • ECMA:ECMA 国际,制定了标准化的脚本程序设计语言 ECMAScript,而 JavaScript 是遵循 ECMAScript 的标准的
  • ECMAScript 6 是最新的 JavaScript 版本

JS 引入方式

  • JS 的引入方式,即 将 JavaScript 应用到 HTML 的方法

  • 两种引入方式:

    • 内部脚本:将 JS 代码定义在 HTML 页面中

      • JS 代码必须位于 <script> 标签中
      • 在 HTML 文档中,可以在任意地方,放置任意数量的 <script>
      • 一般会将 JS 脚本置于 <body> 元素的底部,可以改善显示速度
      <script>// JS内容
      </script>
      
    • 外部脚本:将 JS 代码定义在外部 JS 文件中,然后引入到 HTML 页面中

      • 外部 JS 文件中,只包含 JS 代码,不包含 <script> 标签
      • 注意:<script> 标签不能自闭合
      <script src="demo.js"></script>					// 正确用法
      <script src="demo.js"/>							// 错误用法,不能自闭合
      

JS 基础语法

  • 书写语法:

    • 区分大小写
    • 每行结尾的分号可有可无
    • 注释:分成单行注释 // 和多行注释 /* */
    • 大括号表示代码块
  • 输出语句:

    • window.alert():写入警告框,使用浏览器打开页面时会弹出警告框,可简写成 alert()

      图4-1
    • document.write():写入 HTML 输出

      图4-2
    • console.log():写入浏览器控制台,可以使用开发者工具查看

      图4-3
  • 变量:

    • 使用 var 关键字来声明变量

    • 命名规则:

      • 组成字符可以是任何字母、数字、下划线或美元符

      • 不能以数字开头

      • 建议使用驼峰命名

    • 特点:

      • JS 是一门弱类型的语言,变量可以存放不同类型的值

      • 不管在哪声明,均为全局变量

      • 变量可以重复声明,后者会覆盖前者

    • ECMAScript 6 新增:

      • let 关键字:用于声明变量,不同于 var 的是,其所声明的变量只在代码块内有效(局部变量),且不允许重复声明
      • const 关键字:用于声明一个只读的常量,一旦声明,常量的值就不能改变,作用域也为代码块内,且不允许重复声明
    • 示例:

      <script>{var a = 1;var a = "Hello";					// 正确,var变量可以重复声明let b = 2;let b = 3;							// 错误,let变量不能重复声明const pi = 3.14;pi = 3.15;							// 错误,const常量不能修改}alert(a);								// 正确,var变量为全局变量alert(b);								// 错误,let变量为局部变量alert(pi);								// 错误,const常量为局部常量
      </script>
      
  • 数据类型:

    • 分成 原始类型 和 引用类型

    • 原始类型:

      • number:数字,包括整数、小数、NaN(Not a Number)
      • string:字符串,单引号、双引号皆可
      • boolean:布尔类型,true 或者 false
      • null:对象为空
      • undefined:当声明的变量未初始化时,该变量的类型为 undefined,值也为 undefined
    • 使用 typeof 运算符可以获取数据类型

      <script>alert(typeof 1);						// 输出为 numberalert(typeof "A");						// 输出为 stringalert(typeof true);						// 输出为 booleanalert(typeof null);						// 输出为 object,不为null,这是早期的一个bug,但沿用至今了var a;alert(typeof a);						// 输出为 undefined
      </script>
      
  • 运算符:

    • JS 的全部运算符

      • 算术运算符:+, -, *, /, %, ++, --
      • 赋值运算符:=, +=, -=, *=, /=, %=
      • 比较运算符:>, <, >=, <=, !=, ==, ===
      • 逻辑运算符:&&, ||, !
      • 三元运算符:?
    • 全等运算符 ===:

      • 使用 == 对比两个值时,类型不同时会自动进行类型转换,再进行值的比较
      • 使用 === 对比两个值时,类型不同时直接返回 false,不会进行类型的转换
      <script>var a = 10;alert(a == "10");						// 输出为 truealert(a === "10");						// 输出为 false
      </script>
      
    • 常见类型转换:

      • 字符串类型转为数字:将字符串字面值转为数字,如果字面值不是数字,则转为 NaN
      • 其他类型转为 boolean:
        • number:0 和 NaN 转为 false,其余转为 true
        • string:空字符串转为 false,其余转为 true
        • null 和 undefined:转为 false
      <script>// 使用parseInt()方法将字符串类型转换为数字:逐个读取,遇到非数字停止alert(parseInt("12"));											// 输出为 12alert(parseInt("12A45"));										// 输出为 12alert(parseInt("A45"));											// 输出为 NaN// 使用if语句判断其他类型如何自动转换成boolean类型if (0) {alert("0 转换为 false");										// 不会被执行}if (NaN) {alert("NaN 转换为 false");										// 不会被执行}if (-1) {alert("除 0 和 NaN 以外其他数字都转换为 true");					// 会被执行}if ("") {alert("空字符串转为 false");									// 不会被执行}if (" ") {alert("除了空字符串以外其他 string 都转为 true");				// 会被执行}if (null) {alert("null 转为 false");										// 不会被执行}if (undefined) {alert("undefined 转为 false");								// 不会被执行}
      </script>
      
  • 流程控制语句:

    • if ... else if ... else
    • switch
    • for
    • while
    • do ... while

JS 函数

  • 介绍:函数(方法)是被设计为执行特定任务的代码块

  • 定义:JS 通过 function 关键字定义函数

    • 方式一:

      <script>// 函数定义function functionName(param1, param2) {// todo}// 函数调用functionName(param1, param2);
      </script>
      
    • 方式二:

      <script>// 函数定义var functionName = function (param1, param2) {// todo}// 函数调用functionName(param1, param2);
      </script>
      
  • 注意:

    • 在函数声明时,形参和返回值都不需要指定类型
    • 函数调用时可以传递任意个数的参数,也就是说就算函数只有两个形参,调用时也可以传递超过两个形参,会依次读传递的参数

JS 对象

  • 分成 基础对象,BOM 对象(BOM:浏览器对象模型),DOM 对象(DOM:文档对象模型)

  • 常见基础对象:Array,String,JSON

  • Array

    • 作用:用于定义数组

    • 定义:

      特点:数组长度可变,数据类型可变

      <script>var arr = new Array(1, 2, 3, 4);				// 定义方式一var arr = [1, 2, 3, 4];							// 定义方式二arr[10] = 10;									// 数组长度可变,中间的未定义变量值为undefinedarr[0] = "Hello";								// 数据类型可变
      </script>
      
    • 常见属性:

      属性 描述
      length 设置或返回数组中元素的数量

      示例:用于遍历数组

      <script>var arr = [1, 2, 3, 4];for (let i = 0; i < arr.length; i++) {console.log(arr[i]);}
      </script>
      
    • 常见方法:

      方法 描述
      forEach() 遍历数组中的每个 有值 的元素,并调用一次传入的函数
      push() 将新元素添加到数组的末尾,并返回新的长度
      splice() 从数组中删除元素

      示例:

      <script>var arr = [1, 2, 3, 4];// 1.使用forEach()方法遍历数组,其中e表示数组中的逐元素// 完整格式arr.forEach(function(e){console.log(e);})// 简化格式(ES6新增):使用箭头函数简化函数定义语法arr.forEach((e) => {console.log(e);})// 2.使用push()方法添加元素,可以一次添加多个arr.push(7, 8, 9);// 3.使用splice()删除元素,第一个参数为开始删除的索引,第二个参数为要删除的元素个数arr.splice(2, 2);
      </script>
      
  • String

    • 定义:

      <script>var str = new String("Hello");var str = "Hello";
      </script>
      
    • 常见属性:

      属性 描述
      length 字符串的长度
    • 常见方法:

      方法 描述
      charAt() 返回在指定位置的字符
      indexOf() 检索字符串,返回索引
      trim() 去除字符串两边的空格
      substring() 提取字符串中两个指定的索引号之间的字符(包头不包尾)

      示例:

      <script>var str = " Hello  ";console.log(str.charAt(3));						// 输出为 lconsole.log(str.indexOf("lo"));					// 输出为 4console.log(str.trim());						// 输出为 "Hello"console.log(str.substring(0, 2));				// 输出为 " H"
      </script>
      
  • 自定义对象

    定义格式 和 调用方法:

    <script>var 对象名 = {属性名1: 属性值1,属性名2: 属性值2,属性名3: 属性值3,函数名1: function(形参列表) {}					// 定义方法的完整格式函数名2 () {}									// 定义方法的简化格式};对象名.属性名1;对象名.函数名1();
    </script>
    
  • JSON

    • 概念:JavaScript Object Notation,JS 对象标记法,JSON 是通过 JS 对象标记法书写的文本

    • 作用:由于其语法简单,层次结构鲜明,现多用于作为数据载体,在网络中进行数据传输

    • 分成键(key)和值(value):

      • 键:必须要用双引号包围
      • 值:可以是多种数据类型
        • 数字:整数或浮点数
        • 字符串:必须使用双引号
        • 逻辑值:true,false
        • 数组:在方括号中
        • 对象:在大括号中
        • null
    • 定义:

      <script>// 1.定义JSON字符串:JSON字符串本质是文本,需要用单引号包围,不能使用双引号,否则会和内部键值对的双引号误匹配var 变量名1 = '{"key1": value1, "key2": value2}';// 2.JSON字符串转为JS对象var 变量名2 = JSON.parse(变量名1);// 3.JS对象转为JSON字符串var 变量名3 = JSON.stringify(变量名2);
      </script>
      

      示例:

      <script>var userStr = '{"name": "Tom", "age": 18, "addr": ["地点1", "地点2"]}';var userObject = JSON.parse(userStr);var userStr = JSON.stringify(userObject);// 获取JS对象后,就可以通过键获取对应的值,注意这里的键不需要使用双引号包围console.log(userObject.name);
      </script>
      
  • BOM

    • 概念:Browser Object Model,浏览器对象模型,将浏览器的各个组成部分封装为对象

    • 组成:Window:浏览器窗口对象,Navigator:浏览器对象,Screen:屏幕对象,History:历史记录对象,Location:地址栏对象

    • Window:

      • 获取:直接使用 window,例如 window.alert(),其中 window. 可以省略

      • 属性

        属性名 描述
        history 对 History 对象的只读引用
        location 用于窗口或框架的 Location 对象
        navigator 对 Navigator 对象的只读引用
      • 方法

        方法名 描述
        alert() 显示带有一段消息和一个确认按钮的警告框
        confirm() 显示带有一段消息以及确认按钮和取消按钮的对话框
        setInterval() 按照指定的周期(单位:ms)来调用函数或计算表达式
        setTimeout() 在指定的时间(单位:ms)后调用函数或计算表达式
      • 示例

        <script>// 1.调用 alert()方法alert("Hello");// 2.调用confirm()方法,点击确认按钮时返回值为true,点击取消按钮时返回值为falsevar flag = confirm("确认删除吗?");// 3.调用setInterval()方法,第一个参数为要执行的函数或计算表达式,第二个参数为时间间隔setInterval(function(){console.log("每隔2s执行一次");}, 2000);// 4.调用setTimeout()方法,第一个参数为要执行的函数或计算表达式,第二个参数为延迟时间setTimeout(function(){console.log("等待2s后执行");}, 2000);
        </script>
        
    • Location:

      • 获取:使用 window.location 获取,其中 window. 可以省略

      • 属性

        属性名 描述
        href 设置或返回完整的 URL
      • 示例

        <script>// 返回当前页面的URLalert(location.href);// 设置当前页面的URL,设置完后页面会跳转到对应的URL页面location.href = "https://www.baidu.com";
        </script>
        
  • DOM

    • 概念:Document Object Model,文档对象模型,是 W3C(万维网联盟)提出的标准

    • 作用:对 HTML 进行操作,例如改变 HTML 元素内容,改变 HTML 元素样式,添加或删除 HTML 元素,对 HTML 的 DOM 事件作出反应

    • 组成:DOM 定义了访问 HTML 和 XML 文档的标准,分成三部分:

      1. Core DOM:所有文档类型的标准模型
        • Document:整个文档对象
        • Element:元素对象
        • Attribute:属性对象
        • Text:文本对象
        • Comment:注释对象
      2. XML DOM:XML 文档的标准模型
      3. HTML DOM:HTML 文档的标准模型
        • Image:<img>
        • Button:<input type='button'>
    • Element

      • 获取:HTML 中的 Element 对象可以通过 Document 对象获取,而 Document 对象通过 Window 对象获取

        • 根据 id 属性值获取,返回单个 Element 对象

          var h1 = document.getElementById('h1');
          
        • 根据标签名称获取,返回 Element 对象数组

          var divs = document.getElementsByTagName('div');
          
        • 根据 name 属性值获取,返回 Element 对象数组

          var hobbys = document.getElementsByName('hobby');
          
        • 根据 class 属性值获取,返回 Element 对象数组

          var clss = document.getElementsByClassName('cls');
          
      • 应用:在获取到元素后,查询参考手册,调用合适的属性/方法完成所需功能

        步骤一:打开参考手册 w3school 在线教程

        步骤二:打开 JavaScript 内容页

        图4-4

        步骤三:打开 JavaScript 中的参考书

        图4-5

        步骤四:在参考书左侧工具栏中找到需要查询的标签

        图4-6

        步骤五:查询需要使用的属性/方法(一般只要查询该标签的特有属性/方法即可,但有时需要如下图所示进入标准(公有)属性/方法中查询)

        图4-7

        图4-8

      • 示例:

        <body><!-- 网页原内容 --><div class="cls">Hello</div><!-- 使用DOM对原内容进行修改 --><script>// 1.根据class属性值获取Element对象数组var clss = document.getElementsByClassName('cls');// 2.遍历对象数组获取每一个Element对象(此处由于只有一个元素,因此省略了遍历过程)var cls = clss[0];// 3.调用innerHTML属性,赋值成修改后的内容cls.innerHTML = "你好";</script>
        </body>
        

JS 事件监听

  • 事件:HTML 事件是指发生在 HTML 元素上的事情,例如:按钮被点击,鼠标移动到元素上,按下键盘按钮

  • 事件监听:在事件被侦测到时执行指定代码

  • 事件绑定:

    • 方式一:通过 HTML 中的事件属性进行绑定

      <body><input type="button" onclick="on()" value="按钮"><script>function on() {alert("按钮被点击了");}</script>
      </body>
      
    • 方式二:通过 DOM 元素属性绑定

      <body><input type="button" id="btn" value="按钮"><script>document.getElementById("btn").onclick=function(){alert("按钮被点击了");}</script>
      </body>
      
  • 常见事件:

    事件名 说明
    onclick 鼠标单击事件
    onblur 元素失去焦点(鼠标点击其它元素会使该元素失去焦点)
    onfocus 元素获得焦点(鼠标点击元素会使该元素获得焦点)
    onload 某个页面或图像被加载完成
    onsubmit 当表单提交时触发该事件
    onkeydown 某个键盘的键被按下
    onmouseover 鼠标被移动到某元素之上
    onmouseout 鼠标从某元素之上移开

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/892428.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

水晶分班5.21-分析记录

水晶分班5.21-分析记录 目录程序信息注册按钮事件-TfrmZc_btnZcClick_008C41B4浏览器回调-TForm1_WebBrowserZcDocumentComplete_008D6EDC启动时检验-TForm1_FormShow_008D71B0MG_MD5_81D008(todo)ps 程序信息 版本"5.21 <2024.9.7>" PE32操作系统: Windows(…

[Docker] 如何给 Docker 配置网络代理?

序 有时因为网络原因,比如公司 NAT,或其它啥的,需要使用代理。Docker 的代理配置,略显复杂,因为有三种场景。但基本原理都是一致的,都是利用 Linux 的 http_proxy 等环境变量。 概述:Docker 网络代理方案 方案1:Dockerd 代理在执行docker pull时,是由守护进程dockerd来…

牛客题解 | 验证IP地址

牛客题库题解题目 题目链接 题目主要信息:IPv4只有十进制数和分割点,其中数字在0-255之间,共4组,且不能有零开头的非零数,不能缺省 IPv6由8组16进制数组成,会出现a-fA-F,通过冒号分割,不可缺省,可以零开头,或者为一个单独零,每组最多4位。举一反三: 学会了本题的思…

牛客题解 | 链表中环的入口结点

牛客题库题解题目 题目链接 题目主要信息:给定一个链表,首先判断其是否有环,然后找到环的入口举一反三: 学习完本题的思路你可以解决如下题目: BM4.合并有序链表 BM5.合并k个已排序的链表 BM6.判断链表中是否有环 BM8.链表中倒数最后k个节点 BM9.删除链表的倒数第n个节点 B…

牛客题解 | 链表中环的入口结点_1

牛客题库题解题目 题目链接 描述 这是一篇针对初学者的题解,共用两种方法解决。 知识点:单链表,哈希,双指针 难度:二星题解 题目抽象:给定一个单链表,如果有环,返回环的入口结点,否则,返回nullptr 方法一:哈希法遍历单链表的每个结点 如果当前结点地址没有出现在set…

通过工艺对象的双轴同步设置

硬件导入导入GSDmlGSDml文件是从Starter导入的,所有驱动合成一个gsdml文件,需要同步的两个驱动使用的标准报文3:starter配置一些必要电机和铭牌信息即可,主要组态在工艺对象,所以电机测需要配置的不多。工艺对象配置添加主动轴,选择TO_PositioningAxis基本设置,直线运动就…

AI时代的灵魂拷问:我们真正的核心竞争力到底是什么?

“当所有人都在谈论AI+的时候,今天我想聊一点不一样的...” 上周,朋友看着我用Cursor在30分钟内完成了他过去需要两天才能完成的工作。 那一刻,一种强烈的危机感涌上心头,他问我:“如果AI可以做得和我们一样好,甚至更好,那我们存在的价值是什么?” 这恐怕是当下许多人都…

EscapeTwo

EscapeTwo题目中给出了一组账号和密码: As is common in real life Windows pentests, you will start this box with credentials for the following account: rose / KxEPkKe6R8sunmap扫一下: root@lbz-lenovo:/mnt/c/Users/86138# nmap -sC -sV -T4 10.129.221.182 Starting…

从零开始的web前端学习-css

CSS 称为层叠样式表,是一种样式表语言,用来描述 HTML 文档的呈现,是对 HTML 的美化 选择器 {属性: 属性值; }目录1CSS引入方式2选择器3区域填充4文字控制属性5复合选择器6伪类选择器(一般用于超链接)7CSS特性8背景属性9显示模式10结构伪类选择器11伪元素选择器12盒子模型-…

关于启用CDN加速域名

在微信小程序连接cos云对象存储时候,需要通过CDN加速域名,需要自己租赁域名 关于启用CDN域名加速的好处: 1. 加速内容分发 (1)全球加速CDN(内容分发网络)通过将内容缓存到全球多个节点,使用户可以从离他们最近的节点获取资源。无论用户位于何处,都能享受快速的访问速度…

redis面试知识

redis是什么介绍 redis是储存在内存中,读写很快,是基于c语言编写的,是原子性的,常用于缓存。redis可以将数据储存到磁盘中实现持久化。 redis的优点 1.基于内存,访问速度很快。 2.支持多种数据类型,如hash,String,map等 3.支持持久化 4.redis的操作是单线程的,安全 5.r…

五星红旗python代码

import turtle def draw_star(size, angle):turtle.begin_fill()for _ in range(5):turtle.forward(size)turtle.right(angle)turtle.end_fill() 初始化画布 turtle.setup(900, 600) turtle.bgcolor("red") 绘制大星 turtle.penup() turtle.goto(-400, 200) turtle.c…