Web前端-JavaScript

黑马程序员JavaWeb开发教程

文章目录

  • 一、js引入方式
    • 1、内部脚本
    • 2、外部脚本
  • 二、js基础语法
    • 1、书写语法
      • (1)基本语法
      • (2)输出语句
    • 2、变量
      • (1)变量
      • (2)注意事项
    • 3、数据类型、运算符、流程控制语句
      • (1)数据类型
      • (2)运算符
      • (3)流程控制语句
  • 三、js函数
      • (1)函数
  • 四、js对象
    • 1、Array
      • (1)数组的定义以及访问语法
      • (2)Array中的属性和方法
    • 2、String
      • (1)字符串的创建方式
    • 3、JSON
      • (1)JavaScript自定义对象
      • (2)JSON-介绍
      • (3)JSON-基础语法
    • 4、BOM
      • (1)BOM
      • (2)Window
      • (3)Location
    • 5、DOM
      • (1)DOM
      • (2)DOM操作小案例
  • 五、js事件监听
    • 1、事件监听
      • (1)概念
    • 2、JS事件监听
      • (1)事件绑定
      • (2)常见事件
      • (3)案例

  • JS介绍
  1. javaScript(简称JS)是一门跨平台、面向对象的脚本语言,是用来控制网页行为的,它能使网页可交互
  2. JavaScript和java是完全不同的语言,不论是概念还是设计,但是基础语法类似

一、js引入方式

1、内部脚本

  • 将JS代码定义在HTML页面中
  1. JavaScript 代码必须位于<scripy></script>标签之间

  2. 在HTML文档中可以在任意地方防止任意数量的<scripy></script>标签

  3. 一般会把脚本防止在<body>元素的底部这样可以改善显示速度

    在这里插入图片描述

2、外部脚本

  • 将JS代码定义在外部JS文件中,然后引入到HTML页面中
  1. 外部JS文件中,只包含JS代码,不包含<scripy></script>标签
  2. 在HTML文件中通过<scripy></script>标签来引入JS文件
  3. <scripy></script>标签不能自闭合
    在这里插入图片描述

二、js基础语法

1、书写语法

(1)基本语法

  • 区分大小写:与java一样,变量名、函数名以及其他的一切东西都是区分大小写的
  • 每行结尾的分号可有可无(建议写上)
  • 注释:
    • 单行注释:// 注释内容
    • 多行注释:/* 注释内容 */
  • 大括号表示代码块

(2)输出语句

  • 使用 window.alert() 写入警告框
  • 使用document.write() 写入HTML输出
  • 使用 console.log() 写入浏览器控制台输出
    在这里插入图片描述

2、变量

(1)变量

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

    • var 声明的变量作用域比较大,全局变量
    • var 声明的变量可以重复定义,后定义的会将前边定义的变量覆盖掉
  • JavaScript是一门弱类型语言,变量可以存放不同类型的值
    在这里插入图片描述

  • 变量名需要遵循如下规则

    • 组成字符可以使任何目、数字、下划线(_)、或者美元符号($)
    • 数字不能开头
    • 建议使用驼峰命名

(2)注意事项

  • ECMScript 6 新增了let关键字来定义变量。他的用法类似于 var ,但是所声明的变量只在let代码块内有效,且不允许重复声明。
  • 新增了 const 关键字,用来声明一个只读的常量,一旦声明,常量的值就不能改变

3、数据类型、运算符、流程控制语句

(1)数据类型

  • 原始类型
    • number:数字(整数、小数NaN)
    • string:字符串,单引号和双引号都可以
    • boolean:布尔
    • null:对象为空
    • undefined:当声明的变量未初始化时,该变量的默认值是undefined

(2)运算符

  1. 运算符
  • 算术运算符:+ , - , * , / , % , ++ , –
  • 赋值运算符:= , += , -= , *= , /= , %=
  • 比较运算符:> , < , >= , <= , != , == , ===
    • ==:会进行类型转换
    • ===:不会进行类型转换
  • 逻辑运算符:&& , || , !
  • 三元运算符:条件表达式 ?true_value : false_value
  1. 类型转换
  • 字符串类型转为数字 parseInt
    • 将字符串字面值转为数字,如果字面值不是数字,则转为 NaN
  • 其他类型转为boolean
    • Number:0 和 NaN 是 false,其余的都是 true
    • String:空为 false,其余的都是 true
    • Null和undefined:都是 false

(3)流程控制语句

  • if…else if …else…
  • switch
  • for
  • while
  • do…while
  • 语法与 java 当中一致

三、js函数

(1)函数

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

  • 定义:

    • JavaScript函数通过function关键字进行定义,语法为

      在这里插入图片描述

    • 第二种方式

      在这里插入图片描述

  • 注意:

    • 形式参数不需要类型,因为JS是弱类型语言
    • 返回值也不需要定义类型,可以在函数内部直接使用return返回即可
    • 调用:函数名(实际参数列表)
      在这里插入图片描述

四、js对象

1、Array

(1)数组的定义以及访问语法

  • JavaScript 中 Array 对象用于定义数组

  • 定义

    • 方式一

      在这里插入图片描述

    • 方式二

      在这里插入图片描述

  • 访问

    在这里插入图片描述

(2)Array中的属性和方法

  • 属性
    • length:社会或返回数组中元素的数量
  • 方法
    • forEach():遍历数组中每个有值的元素,并调用一次传入的函数

      在这里插入图片描述
      在这里插入图片描述

    • push():将新元素添加到数组的末尾,并返回新的长度

      • arr.push(3,4,5);
    • splice():从数组中删除元素

      • arr.splice(2,3);//从索引为2的位置开始删,一共删除3个元素

2、String

(1)字符串的创建方式

  • String字符串的创建方式有两种
			// 第一种方式var 变量名 = new String("...");var str = new String("Hello String");// 第二种方式var 变量名 = "...";var str = "HelloString";
  • 属性
    • length:字符串的长度
  • 方法
    • charAt():返回在指定位置的字符
    • indexOf():检索字符串
    • trim():去除字符串两边的空格,中间的不会去除
    • subString():提取字符串中两个指定的索引号之间的字符
      在这里插入图片描述

3、JSON

(1)JavaScript自定义对象

  • 定义格式
    在这里插入图片描述

  • 调用格式
    在这里插入图片描述

(2)JSON-介绍

  1. 概念:JavaScript Object Notation,JavaScript对象标记法
  2. JSON是通过JavaScript对象标记法书写的文本
  3. 由于其语法简单,层次结构鲜明,现多用于作为数据载体,在网络中进行数据传输
  4. 正确的JSON格式:key必须使用双引号
 {"name":"Tom","age":20,"gender":"male"}

(3)JSON-基础语法

  • 定义:
    在这里插入图片描述

  • value的数据类型为

    • 数字(整数或浮点数)
    • 字符串(在双引号中)
    • 逻辑值(true或者false)
    • 数组(在方括号中)
    • 对象(在花括号中)
    • null
  • JSON字符串转为JS对象
    在这里插入图片描述

  • JS对象转为JSON字符串
    在这里插入图片描述

4、BOM

(1)BOM

  • 概念:Browser Object Model 浏览器对象模型,允许JavaScript与浏览器对话,JavaScript将浏览器的各个组成部分封装为对象
  • 组成
    • Window:浏览器窗口对象
    • Navigator:浏览器对象
    • Screen:屏幕对象
    • History:历史记录对象
    • Locationn:地址栏对象

(2)Window

  • 介绍

    • 浏览器窗口对象
  • 获取

    • 直接使用window,其中window.可以省略
      在这里插入图片描述
  • 属性

    • history:对History对象的只读引用
    • location:用于窗口或者框架的Location对象
    • navigator:对Navigator对象的只读引用
  • 方法

    • alert():显示带有一段消息和一个确认按钮的警告框

    • confirm():显示带有一短消息以及确认按钮和取消按钮的对话框

      在这里插入图片描述

    • setInterval():按照指定的周期来调用函数或计算表达式

      在这里插入图片描述

    • setTimeout():在指定的毫秒数之后调用函数或计算表达式

      在这里插入图片描述

(3)Location

  • 介绍

    • 地址栏对象
  • 获取

    • 使用window.location获取,其中window.可以省略
      在这里插入图片描述
  • 属性

    • href :设置或返回完整的URL
      在这里插入图片描述

5、DOM

(1)DOM

  • 概念
    • Document Object Modeel,文档对象模型
  • 将标记语言的各个部分封装为对应的对象
    • Document:整个文档对象
    • Element:元素对象
    • Attribute:属性对象
    • Text:文本对象
    • Comment:注释对象
  • JavaScript 通过DOM,就能够对HTML进行操作
    • 改变HTML元素的内容
    • 改变HTML元素的样式CSS
    • 对HTML DOM 时间做出反应
    • 添加和删除HTML元素
  • DOM 是 W3C 的标准,定义了访问HTML和XML文档的保准,分为3个不同的部分
    1. Core DOM-所有文档类型的标准模型
    • Document:整个文档对象
    • Element:元素对象
    • Attribute:属性对象
    • Text:文本对象
    • Comment:注释对象
    1. XML DOM-XML 文档的标准模型
    1. HTML DOM -HTML文档的标准模型
    • Image:<img>
    • Button:<input type='button'>
      ###(2)获取HTML中的DOM对象
  • HTML的的Element对象可以通过Document对象获取,而Document对象是通过window对象获取的
  • Document对象中提供了以下获取Element元素的函数
    • 根据id属性值获取,返回单个Element对象

      在这里插入图片描述

    • 根据标签名称获取,返回Element对象数组

      在这里插入图片描述

    • 根据name属性值获取,返回Element对象数组

      在这里插入图片描述

    • 根据class 属性值获取,返回Element对象数组

      在这里插入图片描述

实例完整代码

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><img id ="h1" src="../img/off.gif" width="50px"><br><br><div class="cls">传智教育</div><br><div class="cls">黑马程序员</div><br><input type="checkbox" name="hobby">电影<input type="checkbox" name="hobby">旅游<input type="checkbox" name="hobby">游戏<script>// 1.获取 Element 元素 // 1.1 获取元素-根据 id 获取var img = document.getElementById("h1");alert(img);// 1.2 获取元素-根据标签获取var d = document.getElementsByTagName("div");for (let i = 0; i < d.length; i++) {alert(d[i]);}// 1.3 获取元素-根据 name 属性获取var names = document.getElementsByName("hobby");for (let i = 0; i < names.length; i++) {alert(names[i]);}// 1.4 获取元素-根据 class 属性获取var clsArray = document.getElementsByClassName("cls");for (let i = 0; i < clsArray.length; i++) {alert(clsArray[i]);}</script> <script>// 2、查询参考手册,属性、方法var divs = document.getElementsByTagName("div");var div1 = divs[0];//拿到第一个divdiv1.innerHTML = "传智教育666";</script>
</body>
</html>

结果示例

在这里插入图片描述

(2)DOM操作小案例

注意:可以在 https://www.w3school.com.cn/ 查找相关的操作DOM的属性和方法

  • 将灯泡点亮
  • 所有div标签的内容后边加上very good(红色字体)
  • 使所有的复选框呈现选中状态
    实例代码
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>DOM 练习</title>
</head><body><img id="h1" src="../img/off.gif" width="50px"><br><br><div class="cls">传智教育</div><br><div class="cls">黑马程序员</div><br><input type="checkbox" name="hobby">电影<input type="checkbox" name="hobby">旅游<input type="checkbox" name="hobby">游戏<script>// 1、点亮灯泡// 1.1 通过id属性拿到 img对象var img = document.getElementById("h1");// 1.2 操作元素的src属性img.src = "../img/on.gif";// 2、所有div标签的内容后边加上very good(红色字体)// 2.1 获得div标签var divs = document.getElementsByTagName("div");// 2.2 在div标签内容后边添加内容for (let i = 0; i < divs.length; i++) {const div = divs[i];div.innerHTML += "<font color='red'>  very good</font>";}// 3、使所有的复选框呈现选中状态// 3.1 根据name属性得到所有复选框var checks = document.getElementsByName("hobby");// 3.2 将复选框做成选中状态for (let i = 0; i < checks.length; i++) {checks[i].checked = true;// c.checked=true;}</script></body></html>

结果示例:

在这里插入图片描述

五、js事件监听

1、事件监听

(1)概念

  • 事件:HTML事件是发生在HTML元素上的“事情”。比如
    • 按钮被点击
    • 鼠标移动到元素上
    • 按下键盘按键
  • 事件监听
    • JavaScript 可以在时间被侦测到的时候执行代码

2、JS事件监听

(1)事件绑定

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

    在这里插入图片描述

  • 方式二:通过DOM元素属性绑定

    在这里插入图片描述

  • 完整示例代码

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>事件绑定</title>
</head><body><input type="button" id="btn1" value="事件绑定1" onclick="on()"><input type="button" id="btn2" value="事件绑定2"><!-- 方式一:通过HTML标签中的事件属性进行绑定 --><script>function on() {alert("事件绑定1被点击了");}</script><!-- 方式二:通过DOM元素属性绑定 --><script>document.getElementById("btn2").onclick = function () {alert("事件绑定2被点击了");}</script>
</body></html>

(2)常见事件

  • onclick:鼠标单击事件
  • onblur:元素失去焦点
  • onfocus:元素获得焦点
  • onload:某个页面或者图像被完成加载
  • onsubmit:当表单提交时出发改时间
  • onkeydown:某个键盘的键被按下
  • onmouseover:鼠标被移到某元素上
  • onmouseout:鼠标从某元素移开

注意:常见事件的使用方法在下个案例中有所提及

(3)案例

  1. 最初的图片是如下图:

在这里插入图片描述

  1. 案例要求如下
  • 1、 点击“点亮”按钮灯泡被点亮,点击“熄灭”按钮熄灭灯泡(即修改图片)
  • 2、输入框,鼠标聚焦之后展示小写,离焦之后展示大写
  • 3、点击“全选”按钮使所有复选框呈现被选中状态,点击“反选”按钮,使所有复选款呈现未被选中状态
  1. 最终呈现状态
    在这里插入图片描述

  2. 实例代码如下

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>练习 </title>
</head><body><img src="../img/off.gif" width="70px" id="img_id"><br><br><input type="button" value="点亮" onclick="on()"><input type="button" value="熄灭" onclick="off()"><br><br><input type="text" value="ITCAST" onfocus="fMouse()" onblur="bMouse()" id="text_value"><br><br><input type="checkbox" name="hobby">电影<input type="checkbox" name="hobby">游戏<input type="checkbox" name="hobby">旅游<br><br><input type="button" value="全选" onclick="on_select()"><input type="button" value="反选" onclick="on_unselect()"><br><br><script>//1、 点击“点亮”按钮灯泡被点亮,点击“熄灭”按钮熄灭灯泡(即修改图片)// 1.1 点亮,首先根据标签中的事件属性绑定事件,再通过document修改src属性function on() {document.getElementById("img_id").src = "../img/on.gif";}// 1.2 熄灭,同点亮function off() {document.getElementById("img_id").src = "../img/off.gif";}// 2、输入框,鼠标聚焦之后展示小写,离焦之后展示大写// 2.1 聚焦,onfocusfunction fMouse() {var text = document.getElementById("text_value");text.value = text.value.toLowerCase();}// 2.2 离焦,onblurfunction bMouse() {var text = document.getElementById("text_value");text.value = text.value.toUpperCase();}// 3、点击“全选”按钮使所有复选框呈现被选中状态,点击“反选”按钮,使所有复选款呈现未被选中状态// 3.1 全选function on_select() {var select = document.getElementsByName("hobby");for (let i = 0; i < select.length; i++) {select[i].checked = true;}}// 3.2 反选function on_unselect() {var unselect = document.getElementsByName("hobby");for (let i = 0; i < unselect.length; i++) {unselect[i].checked = false;}}</script>
</body></html>

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

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

相关文章

腾讯云服务器CVM标准型S8实例CPU内存、网络和存储性能测评

腾讯云第八代云服务器标准型S8实例基于全新优化虚拟化平台&#xff0c;CPU采用Intel Emerald Rapids 全新处理器&#xff0c;睿频3.0GHz&#xff0c;内存采用最新DDR5&#xff0c;默认网络优化&#xff0c;最高内网收发能力达4500万pps&#xff0c;最高内网带宽可支持120Gbps。…

java编译过程

java编译器将 java 源文件转换成 class 文件的过程。 &#xff08;1&#xff09;词法分析器 作用&#xff1a;将Java源文件的字符流转变成对应的Token流 每个词法单元&#xff08;token&#xff09;都有一个类型&#xff08;token type&#xff09;和一个值&#xff08;toke…

Ollama教程——使用langchain:ollama与langchain的强强联合

Ollama教程——使用langchain&#xff1a;ollama与langchain的强强联合 简介背景知识ollama简介langchain简介结合使用的重要性 环境搭建安装LangChain安装ollama环境设置 加载文档使用WebBaseLoader加载《奥德赛》 文档处理分割文档 向模型提问构建查询使用文档内容进行查询创…

小米SU7的防晒秘籍

在春日渐暖的日子里&#xff0c;夏天悄然而至。大家有没有从衣柜深处翻出夏衣和防晒装备&#xff0c;来迎接夏日阳光的“偏爱”呢&#xff1f; 深知防晒烦恼的小米&#xff0c;在小米SU7的设计中也充分考虑了汽车防晒这一痛点&#xff0c;采用前风挡三层镀银、天幕双层镀银、四…

漂亮,功能就差?错!优秀B端一定是颜值、体验、功能三位一体。

每次发一些漂亮的B端页面&#xff0c;都会有些人跳出来怼&#xff0c;他们都有一个固定的思维模式&#xff1a;漂亮的B端&#xff0c;一定功能差。这就好比马路上看到开豪车的美女&#xff0c;就觉得钱来路不正。 先给大家看一些过气的B端界面&#xff0c;是不是有似曾相识的感…

Java 集合【补充复习】

Java 集合【补充复习】 Java 集合概述Collection 接口继承树Map 接口继承树 Collection 接口方法使用 iterator 接口遍历集合元素使用 forearch 遍历集合元素 List 接口List 实现类之一&#xff1a;ArrayListList 实现类之二&#xff1a;LinkedList Set 接口Set 实现类之一&…

【Alphalens】使用Alphalens配合Akshare进行双均线因子分析,附源码及常见问题

Alphalens 是非常著名的一个python因子分析库。但是该库由于目前已经不怎么维护&#xff0c;问题非常多。最新的使用建议使用alphalens-reloaded&#xff0c;地址&#xff1a;stefan-jansen/alphalens-reloaded: Performance analysis of predictive (alpha) stock factors (gi…

【数据结构|C语言版】顺序表应用

前言1. 基于动态顺序表实现通讯录1.1 通讯录功能1.2 代码实现1.2.1 SeqList.h1.2.2 SeqList.c1.2.3 Contact.h1.2.4 Contact.c1.2.5 test.c 1.3 控制台测试1.3.1 添加联系人1.3.2 删除联系人1.3.3 修改联系人1.3.4 查找联系人1.3.5 清空通讯录1.3.6 通讯录读档和存档 2. 好题测…

Java SPI机制详解

Java SPI机制详解 1、什么是SPI&#xff1f; SPI 全称为 (Service Provider Interface) &#xff0c;是JDK内置的一种服务提供发现机制。SPI是一种动态替换发现的机制&#xff0c; 比如有个接口&#xff0c;想运行时动态的给它添加实现&#xff0c;你只需要添加一个实现。我们…

B端:导航条长得不都一样吗?错了,这里看过来就懂了。

B端导航条看似都一样&#xff0c;大差不差&#xff0c;仔细看一下&#xff0c;其实各有各的不同&#xff0c;这里方向了十多个&#xff0c;大家仔细看细节。

avicat连接异常,错误编号2059-authentication plugin…

错误原因为密码方式不对&#xff0c;具体可自行百度 首先管理员执行cmd进入 mysql安装目录 bin下边 我的是C:\Program Files\MySQL\MySQL Server 8.2\bin> 执行 mysql -u -root -p 然后输入密码 123456 进入mysql数据库 use mysql 执行 ALTER USER rootlocalhost IDE…

关于沃进科技无线模块demo软件移植问题

文章目录 一、无线模块开发测试准备二、开发板硬件三、开发板默认功能上电默认界面功能选择界面数据包发送界面数据包接收显示界面射频性能测试界面参数设置界面固件信息显示界面 四、软件开发软件SDK框图1、射频硬件驱动&#xff08;详见./radio/myRadio_gpio.c&#xff09;2、…

51单片机实验04 -数码管的动态显示实验

目录 一、实验目的 二、实验内容 三、实验原理 四、实验方法 五&#xff0c;实验效果及代码 1&#xff0c;效果 2&#xff0c;代码 六&#xff0c;课后习题 1&#xff0c;使用定时器T0的中断函数1 从999999~0计时 1&#xff09;效果 2&#xff09;代码 2&#xff0c…

配置linux的oracle 21c启停服务

一、配置启停 1、使用root用户登陆 su - root 2、修改oratab文件 修改oratab文件&#xff0c;将红框里面的N改为“Y”&#xff0c;使启停脚本能够生效 vi /etc/oratab 3、验证 配置好后就能够使用 dbshut 停止服务 和 dbstart 启动服务 了 2.1启动服务 su - oracle dbstart…

什么是线程?线程和进程谁更弔?

第一个参数是所创建进程的pid。 第二个是线程的属性。 第三个参数是返回值为void*&#xff0c;参数也为void*的函数指针。 第四个参数是给第三个参数的参数&#xff0c;也就是给给函数传参。 #include<iostream> #include<pthread.h> #include<unistd.h>…

折叠面板组件(vue)

代码 <template><div class"collapse-info"><div class"collapse-title"><div class"title-left">{{ title }}</div><div click"changeHide"> <Button size"small" v-if"sho…

生产计划和排单管理怎么做

阅读本文&#xff0c;你将了解到&#xff1a;1、企业是如何制定生产计划和进行排单管理&#xff1f; 2.企业在执行生产计划和进行排单管理过程中会遇到那些问题&#xff1f; 3.企业如何高效利用工具去解决问题&#xff1f; 一、生产计划和排单管理是什么 1.生产计划和排单管理…

【uniapp】【uview2.0】【u-sticky】Sticky 吸顶

把pages.json文件中的 “navigationStyle"设置为"custom”, 出现的问题是&#xff0c;莫名奇妙多了个 一个高度 解决方法 /* 使用CSS的sticky定位 */ .sticky {/* #ifdef H5 */ position: -webkit-sticky;position: sticky;top: 0; /* 设置距顶部的距离 */z-ind…

[Python开发问题] Selenium ERROR: Unable to find a matching set of capabilities

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

在Spring Boot实战中碰到的拦截器与过滤器是什么?

在Spring Boot实战中&#xff0c;拦截器&#xff08;Interceptors&#xff09;和过滤器&#xff08;Filters&#xff09;是两个常用的概念&#xff0c;它们用于在应用程序中实现一些通用的逻辑&#xff0c;如日志记录、权限验证、请求参数处理等。虽然它们都可以用于对请求进行…