详解JavaScript

8bb958e873500cfbf048c8abe28502c8.gif

目录

 

JavaScript

引入样式 

基础语法

变量

数据类型

 运算符

JavaScript对象

数组

数组定义

数组操作

函数

语法格式

关于参数个数

函数表达式

对象

JQuery

语法

 选择器

事件

常见的事件

操作元素

获取/设置元素内容 

获取/设置元素属性

获取/设置CSS属性

添加元素

删除元素


 

JavaScript

引入样式 

引入方式语法描述示例
行内样式
直接嵌⼊到 html 元素内部
<input type="button" value="点我⼀下"
οnclick="alert('haha')">
内部样式
定义<script>标签,写到 script 标签中
<script>
alert("haha");
</script>
外部样式
定义<script >标签,通过src属性引⼊外部js
⽂件
<script src="hello.js"></script>

 

 

 

 

 

 

3种引⼊⽅式对⽐:

1. 内部样式会出现⼤量的代码冗余, 不⽅便后期的维护,所以不常⽤. 
2. ⾏内样式, 只适合于写简单样式. 只针对某个标签⽣效. 缺点是不能写太复杂的jS.
3. 外部样式,html和js实现了完全的分离, 企业开发常⽤⽅式.

基础语法

变量

关键字解释示例
var
早期JS中声明变量的关键字, 作⽤域在该语句的函数内
var name='zhangsan';
les
ES6 中新增的声明变量的关键字, 作⽤域为该语句所在的代码块
les name = 'zhangsan';
const
声明常量的,声明后不能修改
const name = 'zhangsan';

 

 

 

 

注意事项:
1. JavaScript 是⼀⻔动态弱类型语⾔,变量可以存放不同类型的值(动态), ⽐如: 

var name='zhangsan';

var name=20;

随着程序的运⾏, 变量的类型可能会发⽣改变. (弱类型)

var a = 10; // 数字
a = "hehe"; // 字符串

数据类型

数据类型描述
number
数字. 不区分整数和⼩数.
string
字符串类型.
字符串字⾯值需要使⽤引号引起来, 单引号双引号均可
boolean
布尔类型. true 真, false 假
undefined
表⽰变量未初始化. 只有唯⼀的值 undefined

 

 

 

 

 

使⽤typeof函数可以返回变量的数据类型:

<script>var a = 10;console.log(typeof a);//numbervar b = 'hello';console.log(typeof b);//stringvar c = true;console.log(typeof c);//booleanvar d;console.log(typeof d);//undefinedvar e = null;console.log(typeof e);//null
</script>

 运算符

运算符类型运算符
算术运算符
+ , - , * , / , %
⾃增⾃减运算符
++ , --
赋值运算符
= , += , -= , *= , /= , %=
⽐较运算符
< , > , <= , >= , != , !==
== ⽐较相等(会进⾏隐式类型转换)
=== ⽐较相等(不会进⾏隐式类型转换)
逻辑运算符
&& , || , !
位运算符
& 按位与
| 按位或
~ 按位取反
^ 按位异或
移位运算符
<< 左移
>> 有符号右移(算术右移)
>>> ⽆符号右移(逻辑右移)
三元运算符
条件表达式 ? true_value : false_value

 

 

 

 

 

 

 

 

 

 

代码示例:

<script>var age = 20;var age1 = "20";var age2 = 20;console.log(age == age1);//true, ⽐较值console.log(age === age1);//false, 类型不⼀样console.log(age == age2);//true, 值和类型都⼀样
</script>

JavaScript对象

数组

数组定义

创建数组有两种⽅式
1. 使⽤ new 关键字创建
// Array A 要⼤写
var arr = new Array();
2. 使⽤字⾯量⽅式创建 [常⽤]
var arr = [];
var arr2 = [1, 2, 'haha', false]; // 数组中保存的内容称为 " 元素

注意: JS 的数组不要求元素是相同类型.

数组操作

1. 读: 使⽤下标的⽅式访问数组元素(从 0 开始)
2. 增: 通过下标新增, 或者使⽤ push 进⾏追加元素
3. 改: 通过下标修改
4. 删: 使⽤ splice ⽅法删除元素

代码示例 

<script>var arr = [1, 2, 'haha', false];//读取数组console.log(arr[0]); //1//添加数组元素arr[4] = "add"console.log(arr[4]);//addconsole.log(arr.length);//5, 获取数组的⻓度//修改数组元素arr[4] = "update"console.log(arr[4]);//update//删除数组元素arr.splice(4,1);// 第⼀个参数表⽰从下标为4的位置开始删除. 第⼆个参数表⽰要删除的元素console.log(arr[4]);//undefined 元素已经删除, 如果元素不存在, 结果为undefinedconsole.log(arr.length);//4, 获取数组的⻓度
</script>

注意:
1. 如果下标超出范围读取元素, 则结果为 undefined
2. 不要给数组名直接赋值, 此时数组中的所有元素都没了

函数

语法格式

// 创建函数 / 函数声明 / 函数定义
function 函数名(形参列表) {
函数体
return 返回值;
}
// 函数调⽤
函数名(实参列表) // 不考虑返回值
返回值 = 函数名(实参列表) // 考虑返回值

函数定义并不会执⾏函数体内容, 必须要调⽤才会执⾏. 调⽤⼏次就会执⾏⼏次.

function hello() {
console.log("hello");
}
// 如果不调⽤函数 , 则没有执⾏打印语句
hello();
调⽤函数的时候进⼊函数内部执⾏, 函数结束时回到调⽤位置继续执⾏. 可以借助调试器来观察.
函数的定义和调⽤的先后顺序没有要求. (这⼀点和变量不同, 变量必须先定义再使⽤)
// 调⽤函数
hello();
// 定义函数
function hello() {
console.log("hello");
}

关于参数个数

实参和形参之间的个数可以不匹配. 但是实际开发⼀般要求形参和实参个数要匹配
1. 如果实参个数⽐形参个数多, 则多出的参数不参与函数运算

sum(10, 20, 30); // 30
2.如果实参个数⽐形参个数少, 则此时多出来的形参值为 undefined
sum(10); // NaN, 相当于 num2 undefined.

函数表达式

var add = function() {
var sum = 0;
for (var i = 0; i < arguments.length; i++) {
sum += arguments[i];
}
return sum;
}
console.log(add(10, 20)); // 30
console.log(add(1, 2, 3, 4)); // 10
console.log(typeof add); // function

此时形如 function() { } 这样的写法定义了⼀个匿名函数, 然后将这个匿名函数⽤⼀个变量来表示。
后⾯就可以通过这个 add 变量来调⽤函数了 。

对象

在 JS 中, 字符串, 数值, 数组, 函数都是对象.
每个对象中包含若⼲的属性和⽅法.
• 属性: 事物的特征.
• ⽅法: 事物的⾏为.

JavaScript 的对象 和 Java 的对象概念上基本⼀致. 只是具体的语法表项形式差别较⼤.
1. 使⽤ 字⾯量 创建对象 [常⽤]
使⽤ { } 创建对象

var a = {}; // 创建了⼀个空的对象
var student = {name: '蔡徐坤',height: 175,weight: 170,sayHello: function() {console.log("hello");}
};

• 使⽤ { } 创建对象
• 属性和⽅法使⽤键值对的形式来组织.
• 键值对之间使⽤ , 分割. 最后⼀个属性后⾯的 , 可有可⽆
• 键和值之间使⽤ : 分割.
• ⽅法的值是⼀个匿名函数.

使⽤对象的属性和⽅法

// 1. 使⽤ . 成员访问运算符来访问属性 `.` 可以理解成 " "
console.log(student.name);
// 2. 使⽤ [ ] 访问属性 , 此时属性需要加上引号
console.log(student['height']);
// 3. 调⽤⽅法 , 别忘记加上 ()
student.sayHello();

2.使⽤ new Object 创建对象

 

var student = new Object(); // 和创建数组类似
student.name = "蔡徐坤";
student.height = 175;
student['weight'] = 170;
student.sayHello = function () {
console.log("hello");
}
console.log(student.name);
console.log(student['weight']);
student.sayHello();
注意, 使⽤ { } 创建的对象也可以随时使⽤ student.name = "蔡徐坤"; 这样的⽅式来新增属性.
3.使⽤ 构造函数 创建对象
function 构造函数名(形参) {
this.属性 = 值;
this.⽅法 = function...
}
var obj = new 构造函数名(实参);

注意:

• 在构造函数内部使⽤ this 关键字来表⽰当前正在构建的对象.
• 构造函数的函数名⾸字⺟⼀般是⼤写的.
• 构造函数的函数名可以是名词.
• 构造函数不需要 return
• 创建对象的时候必须使⽤ new 关键字.

JQuery

使⽤JQuery需要先引⼊对应的库
在使⽤jQuery CDN时,只需要在HTML⽂档中加⼊如下代码:

<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>

其中, src 属性指明了JQuery库所在的URL. 这个URL是CDN(内容分发⽹络)服务提供商为jQuery库提供的⼀个统⼀资源定位符,也可以使⽤其他公司提供的CDN地址。
如果需要使⽤其他版本的JQuery, 可以在官⽹进⾏下载 。

开发时, 建议把JQuery库下载到本地, 放在当前项⽬中. 引⼊外部地址, 会有外部地址不能访问的⻛险.
下载⽅式:
1. 通过浏览器访问上述连接
2. 右键 -> 另存为.... 保存到本地, 放在项⽬中即可.
也可以从其他CDN上下载引⽤JQuery
⽐如:

<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.min.js"></scipt>

语法

jQuery 语法是通过选取 HTML 元素, 并对选取的元素执⾏某些操作 。

$(selector).action()
• $() 是⼀个函数, 它是 jQuery 提供的⼀个全局函数, ⽤于选择和操作 HTML 元素.
• Selector 选择器, ⽤来"查询"和"查找" HTML 元素
• action 操作, 执⾏对元素的操作

JQuery 的代码通常都写在 document ready 函数中.
document:整个⽂档对象, ⼀个⻚⾯就是⼀个⽂档对象, 使⽤document表⽰.
这是为了防⽌⽂档在完全加载(就绪)之前运⾏ jQuery 代码,即在 ⽂档加载完成后才可以对 ⻚⾯进⾏操作。
如果在⽂档没有完全加载之前就运⾏函数,操作可能失败 。

代码示例:

<button type="button">点我消失</button>
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
<script>$(document).ready(function(){$('button').click(function(){$(this).hide();});});</script>

 选择器

我们通过JQuery选择器来选择⼀些HTML元素. 然后对元素进⾏操作.
JQuery选择器 基于已经存在的CSS选择器, 除此之外, 还有⼀些⾃定义的选择器.
jQuery 中所有选择器都以 $ 开头:$()。

语法描述
$("*")
选取所有元素
$(this)
选取当前 HTML 元素
$("p")
所有 <p> 元素
$("p:first")
选取第⼀个 <p> 元素
$("p:last")
最后⼀个 <p> 元素
$(".box")
所有 class="box" 的元素
$("#box")
id="box" 的元素
$(".intro .demo")
所有 class="intro" 且 class="demo" 的元素
$("p.intro")
选取 class 为 intro 的 <p> 元素
$("ul li:first")
选取第⼀个 <ul> 元素的第⼀个 <li> 元素
$(":input")
所有 <input> 元素
$(":checkbox")
所有 type="text" 的 <input> 元素
$(":checkbox")
所有 type="checkbox" 的 <input> 元素

 

 

 

 

 

 

 

 

 

 

 

qqqq

事件

JS 要构建动态⻚⾯, 就需要感知到⽤⼾的⾏为.
⽤⼾对于⻚⾯的⼀些操作(点击, 选择, 修改等) 操作都会在浏览器中产⽣⼀个个事件, 被 JS 获取到, 从⽽进⾏更复杂的交互操作. 

事件由三部分组成:

1. 事件源: 哪个元素触发的
2. 事件类型: 是点击, 选中, 还是修改?
3. 事件处理程序: 进⼀步如何处理. 往往是⼀个回调函数。

例如: 某个元素的点击事件:

 

$("p").click(function(){
        //动作发⽣后执⾏的代码
});

常见的事件

事件代码
⽂档就绪事件(完成加载)
$(document).ready(function)
点击事件
$(selector).click(function)
双击事件
$(selector).dblclick(function)
元素的值发⽣改变
$(selector).change(function)
⿏标悬停事件
$(selector).mouseover(function)

 

 

 

 

 

操作元素

获取/设置元素内容 

JQuery方法说明
text()
设置或返回所选元素的⽂本内容
html()
设置或返回所选元素的内容(包括 HTML 标签)
val()
设置或返回表单字段的值

 

 

 

 

这三个⽅法即可以获取元素的内容, ⼜可以设置元素的内容.
有参数时, 就进⾏元素的值设置, 没有参数时, 就进⾏元素内容的获取.
代码示例
获取元素内容
<div id="test"><span>你好</span></div>
<input type="text" value="hello">
<script>
$(document).ready(function () {
var html = $("#test").html();
console.log("html内容为:"+html);
var text = $("#test").text();
console.log("⽂本内容为:"+text);
var inputVal = $("input").val();
console.log(inputVal);
});
</script>

设置元素内容

<div id="test"></div>
<div id="test2"></div>
<input type="text" value="">
<script>
$(document).ready(function () {
$("#test").html('<h1>设置html</h1>');
$("#test2").text('<h1>设置text</h1>');
$("input").val("设置内容");
});
</script> ​​​​​​​ 

获取/设置元素属性

代码示例 

获取元素属性

<p><a href="https://www.baidu.com/index" id="bite">百度</a></p>
<script>
$(function(){
var href = $("p a").attr("href")
console.log(href);
});
</script>​​​​​​​ 

设置元素属性

<p><a href="https://www.baidu.com/index" id="bite">百度</a></p>
<script>
$(function(){
$("p a").attr("href","baidu.com")
console.log($("p a").attr("href"));
});
</script>

获取/设置CSS属性

css() ⽅法设置或返回被选元素的⼀个或多个样式属性。

代码示例

获取元素属性

 

<div style="font-size: 36px;">我是⼀个⽂本</div>
<script>
$(function(){
var fontSize = $("div").css("font-size");
console.log(fontSize);
});
</script>

设置元素属性

<div style="font-size: 36px;">我是⼀个⽂本</div>
<script>
$(function(){
$("div").css("font-size","24px");
});
</script>

添加元素

添加 HTML 内容
1. append() : 在被选元素的结尾插⼊内容
2. prepend() : 在被选元素的开头插⼊内容
3. after() : 在被选元素之后插⼊内容
4. before() : 在被选元素之前插⼊内容

代码示例

<ol>
<li>List item 1</li>
<li>List item 2</li>
<li>List item 3</li>
</ol>
<img src="pic/rose.jpg">
<script>
$(function () {
$("ol").append("<li>append</li>");
$("ol").prepend("<li>prepend</li>");
$("img").before("图⽚前插⼊");
$("img").after("图⽚后插⼊");
});
</script>

删除元素

删除元素和内容,⼀般使⽤以下两个 jQuery ⽅法:

1. remove() : 删除被选元素(及其⼦元素)
2. empty() : 删除被选元素的⼦元素 

代码示例1:

<div id="div1">我是⼀个div</div>
<button>删除 div 元素</button>
<script>
$(function () {
$('button').click(function(){
$('#div1').remove();
});
});
</script>

代码示例2:

<ol>
<li>List item 1</li>
<li>List item 2</li>
<li>List item 3</li>
</ol>
<button>删除列表元素</button>
<script>
$(function () {
$('button').click(function(){
$('ol').empty();
});
});
</script>

 

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

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

相关文章

【Spring Boot 3】【Web】返回图片

【Spring Boot 3】【Web】返回图片 背景介绍开发环境开发步骤及源码工程目录结构 背景 软件开发是一门实践性科学&#xff0c;对大多数人来说&#xff0c;学习一种新技术不是一开始就去深究其原理&#xff0c;而是先从做出一个可工作的DEMO入手。但在我个人学习和工作经历中&a…

线性查找表的应用:用户登录注册程序

线性查找表是很简单的数据结构和算法。网站的用户登录注册时是基本的功能。本文首先给出线性查找表的基本实现&#xff0c;然后给出在用户登录注册的程序流程图&#xff0c;并将线性查找表应用到用户查询这一具体任务&#xff0c;并基于 Python 语言在控制台实现用户注册、登录…

【简单】 猿人学web第一届 第15题 备周则意怠,常见则不疑

数据接口分析 数据接口 https://match.yuanrenxue.cn/api/match/15 请求时需要携带 page 页码&#xff0c;m为加密参数 cookie中没有加密信息&#xff0c;携带 SessionId请求即可 加密参数还原 查看数据接口对应的 requests 栈 m参数 是通过 window.m() 方法执行后得到的 打上…

什么是 AWS CloudWatch?

AWS CloudWatch 是 AWS 提供的一项全面的监控和可观测性服务&#xff0c;使用户能够收集和可视化指标、日志和事件&#xff1b;设置警报&#xff1b;并根据预定义的条件自动执行操作。CloudWatch 提供对 AWS 资源和应用程序的运行状况、性能和运行状态的深入了解&#xff0c;使…

Linux查看jar包错误日志及持久化运行jar包

一、查看jar包运行信息命令&#xff1a;ps -ef | grep java 如图&#xff0c;给出了所部署jar包的环境变量&#xff0c;服务名称&#xff0c;服务端口信息。 这样便能得到部署的jar包是否在服务器成功运行及基本信息。 二、查看日志 启动信息无误&#xff0c;查看日志是否有报错…

GitLab 是什么?GitLab使用常见问题解答

GitLab 是什么 GitLab是由GitLab Inc.开发&#xff0c;使用MIT许可证的基于网络的Git仓库管理工具开源项目&#xff0c;且具有wiki和issue跟踪功能&#xff0c;使用Git作为代码管理工具&#xff0c;并在此基础上搭建起来的web服务。 ​GitLab 是由 GitLab Inc.开发&#xff0c…

Python和JAX及MATLAB小波分析导图

&#x1f3af;要点 离散小波变换和逆离散小波变换时间序列谱分析计算比例图和频谱图显示数据莫莱小波时频数据表征海表温度异常的区域平均值捕捉市场波动时间频率关联信息信号和图像分解压缩重建降维分析金融波动连续小波卷积网络和离散小波信号分类图像处理、提取地震图速度和…

Java面试自我介绍

持续更新中 模块序号目录链接前言介绍1前言地址2介绍地址基础知识3计算机网络地址4操作系统地址5Java基础地址6Java并发地址7Java虚拟机地址中间件8Mysql地址9Redis地址10Elasticsearch地址11RabbitMQ地址12RocketMQ地址框架13分布式系统地址14MyBatis地址15Dubbo地址16Spring地…

uniapp组件用法

一. 什么是组件,有什么好处? 在uni-app中&#xff0c;组件是构成应用的基本单位&#xff0c;它们是用来定义用户界面的一部分&#xff0c;并且通常包含了视图和逻辑。组件的设计使得开发者能够以声明式的方式构建应用界面&#xff0c;并且通过组件化的开发方式来提高代码的复…

预训练语言模型的前世今生 - 从Word Embedding到BERT

目录 一、预训练 1.1 图像领域的预训练1.2 预训练的思想二、语言模型 2.1 统计语言模型2.2 神经网络语言模型三、词向量 3.1 独热&#xff08;Onehot&#xff09;编码3.2 Word Embedding四、Word2Vec 模型五、自然语言处理的预训练模型六、RNN 和 LSTM 6.1 RNN6.2 RNN 的梯度消…

GAMES104:10+11游戏引擎中物理系统的基础理论算法和高级应用-学习笔记

文章目录 概览一&#xff0c;物理对象与形状1.1 对象 Actor1.2 对象形状Actor Shape 二&#xff0c;力与运动2.1 牛顿定律2.2 欧拉法2.2.1 显式欧拉法Explicit (Forward) Euler’s Method2.2.2 隐式欧拉法 Implicit (Backward) Euler’s Method2.2.3 半隐式欧拉法 Semi-implici…

C语言典型例题58

《C程序设计教程&#xff08;第四版&#xff09;——谭浩强》 例题4.10 求100~200中的全部素数。 代码&#xff1a; //《C程序设计教程&#xff08;第四版&#xff09;——谭浩强》 //例题4.10 求100~200中的全部素数。#include <stdio.h> #include <math.h>int m…

大力出奇迹背景下的Scaling Law能否带领我们走向AGI

Scaling Law&#xff08;尺度定律&#xff09; 在人工智能领域&#xff0c;尤其是在大模型的发展中扮演着至关重要的角色。它描述了模型性能如何随着模型规模&#xff08;如参数数量&#xff09;、数据量和计算资源的增加而提升。这一定律对于理解大模型的能力扩展和优化训练策…

Spring框架;Spring中IOC简介及搭建;Spring中AOP简介;

一&#xff0c;Spring介绍 Spring 的全称&#xff1a; Spring Framework Spring是一个优秀的开源的轻量级的企业应用开发框架&#xff0c;是为了解决企业应用程序开发复杂性而创建的。它大大简化了java企业级开发的复杂性&#xff0c;提供了强大&#xff0c;稳定的功能&#xf…

asp.net core在win上的发布和部署

一、asp.net core两种发布方式 1、两个发布方式——【框架依赖发布】和【独立发布】 2、两种发布方式的差别 二、发布的详细过程 1、【生成】->【发布】 2、框架依赖发布 设置发布参数&#xff0c;然后进行发布 发布好的文件&#xff0c;把它们放到一个新的目录文件夹里 …

Yolov5 AI学习笔记

Yolov5 AI学习笔记 环境准备 需要Python的开发环境&#xff0c;安装Anaconda。 Anaconda的一些命令&#xff1a; # 创建虚拟环境 conda create -n yolo_cpu python3.9 # 查看虚拟环境 conda env list # 激活虚拟环境 conda activate <env_name>Yolov5上手 下载源码 …

六、Selenium操作指南(三)

文章目录 七、模拟鼠标操作&#xff08;一&#xff09;左键 click()&#xff08;二&#xff09;右键 context_click()&#xff08;三&#xff09;双击 double_click()&#xff08;四&#xff09;拖拽 drag_and_drop(source,target)&#xff08;五&#xff09;悬停 move_to_elem…

【动图效果概览】自动化建链后,Exata调用STK更新卫星位置

如下图所示&#xff0c;动画遵循 时间前进方向&#xff0c;划分截取为5段 &#xff08;因为每张照片限制大小5MB&#xff0c;不够应该够看清个大概意思了&#xff09;&#xff1a;

结构型设计模式-适配器(adapter)模式-python实现

设计模式汇总&#xff1a;查看 通俗示例 想象一下&#xff0c;你刚从国外带回一台最新的笔记本电脑&#xff0c;但是你发现它的电源插头是德标插头&#xff0c;而家里的电源插座是中式插座&#xff0c;这时怎么办呢&#xff1f;你需要一个电源适配器来将德标插头转换成中式插座…

读软件开发安全之道:概念、设计与实施15安全测试

1. 安全测试 1.1. 测试是开发可靠、安全代码中的关键一环 1.2. 测试安全漏洞的目的是主动检测 1.3. 模糊测试是一种强大的补充技术&#xff0c;可以帮助我们找到更深层次的问题 1.4. 针对当前漏洞创建的安全回归测试&#xff0c;目的是确保我们不会再犯相同的错误 1.5. 大…