介绍
什么是JavaScript
JavaScript(简称:JS) 是一门跨平台、面向对象的脚本语言,是用来控制网页行为的,实现人机交互效果。JavaScript 和 Java 是完全不同的语言,不论是概念还是设计。但是基础语法类似。
JS核心语法
JS引入方式
第一种方式:内部脚本:将JS代码定义在HTML页面中
例子:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>JS 引入方式</title>
</head>
<body>
<script>
alert('Hello JS')
</script>
</body>
</html>
注意:HTML文档中,可以在任意地方,放置任意数量的<script></script>。但是一般在<body>标签底部(</body>标签之前)添加<script></script>,这样可以确保 HTML 元素先加载,避免脚本操作未解析的 DOM,提升页面加载性能。
第二种方式:将JS代码定义在外部 JS文件中,然后引入到 HTML页面
例子:
-
在js目录下,定义一个js文件(如:
demo.js),在文件中编写js代码,如下:
alert('Hello JS')
-
在html文件中,通过<script></script>引入js文件(
demo.js),如下:
<script src="js/demo.js"></script>
注意:在 HTML 中,引入外部 JS 文件的 <script> 标签必须写成 <script src="file.js"></script> 的完整闭合形式,而不能写成 <script src="file.js" /> 这种自闭合格式,因为 HTML 规范中 <script> 属于非自闭合标签
-
JS书写规范:
-
结束符:每行js代码,结尾以分号结尾,而结尾的分号可有可无。(建议在一个项目中保持一致,要么全部都加,要么全部都不加)
-
注释:单行注释,多行注解的写法, 与java中一致。
-
JS基础语法
输出语句
在JS中有3种输出语句,分别是:
| api | 描述 |
| window.alert(...) | 警告框 |
| document.write(...) | 在HTML 输出内容 |
| console.log(...) | 写入浏览器控制台 |
我们定义如下这么一段JS,来做一个测试:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>JS基础语法</title>
</head>
<body>
<script>
//方式一: 写入浏览器的body区域
document.write("Hello JS (document.write)");
//方式二: 弹出框
window.alert("Hello JS (window.alert)");
//方式三: 控制台
console.log("Hello JS (console.log)")
</script>
</body>
</html>
变量
接下来,我们再来讲解JS中的变量。在js中,变量的声明和java中还是不同的。
-
JS中主要通过
let关键字来声明变量的。 -
JS是一门弱类型语言,变量是可以存放不同类型的值的。
-
变量名需要遵循如下规则:
-
组成字符可以是任何字母、数字、下划线(_)或美元符号($),且数字不能开头
-
变量名严格区分大小写,如:name和Name是不同的变量
-
不能使用关键字作为变量名,如:let、if、for等
-
变量的声明示例如下所示:
<script>
//变量
let a = 20;
a = "Hello";
alert(a);
</script>
常量
在JS中,如果声明一个场景,需要使用const关键字。一旦声明,常量的值就不能改变 (不可以重新赋值)。
数据类型
虽然JS是弱数据类型的语言,但是JS中也存在数据类型,JS中的数据类型分为 :原始数据类型 和 引用数据类型。那这部分,我们先来学习原始数据类型,主要包含以下几种类型:
| 数据类型 | 描述 |
| number | 数字(整数、小数、NaN(Not a Number)) |
| string | 字符串,单双引('...')、双引号("...")、反引号(`...`)皆可,正常使用推荐单引号 |
| boolean | 布尔。true,false |
| null | 对象为空。 JavaScript 是大小写敏感的,因此 null、Null、NULL是完全不同的 |
| undefined | 当声明的变量未初始化时,该变量的默认值是 undefined |
使用typeof 关键字可以返回变量的数据类型,接下来我们需要通过书写代码来演示js中的数据类型。代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>JS-数据类型</title>
</head>
<body>
<script>
//原始数据类型
alert(typeof 3); //number
alert(typeof 3.14); //number
alert(typeof "A"); //string
alert(typeof 'Hello');//string
alert(typeof true); //boolean
alert(typeof false);//boolean
alert(typeof null); //object
var a ;
alert(typeof a); //undefined
</script>
</body>
</html>
对于字符串类型的数据,除了可以使用双引号("...")、单引号('...')以外,还可以使用反引号 (``)。 而使用反引号引起来的字符串,也称为 模板字符串。
-
模板字符串的使用场景:拼接字符串和变量。
-
模板字符串的语法:
-
`...` :反引号 (英文输入模式下键盘 tab 键上方波浪线 ~ 那个键)
-
内容拼接时,使用 ${ } 来引用变量
-
具体示例如下:
<script>
let name = 'Tom';
let age = 18;
console.log('大家好, 我是新入职的' + name + ', 今年' + age + '岁了, 请多多关照'); //原始方式 , 手动拼接字符串
console.log(`大家好, 我是新入职的${name}, 今年${age}岁了, 请多多关照`); //使用模板字符串方式拼接字符串
</script>
函数
函数(function)是被设计用来执行特定任务的代码块,方便程序的封装复用。 那我们学习函数,主要就是学习JS中函数的定义及调用的语法。
方式一
示例:
function add(a, b){
return a + b;
}
如果要调用上述的函数add,可以:
let result = add(10,20);
alert(result);
注意:由于JS是弱类型语言,形参、返回值都不需要指定类型。在调用函数时,实参个数与形参个数可以不一致,但是建议一致。(如果不一致,且实参数量多于形参,多余的实参不会被形参接收;若实参数量少于形参,未被匹配的形参会被自动赋值为 undefined)
方式二
匿名函数:是指一种没有名称的函数,由于它们没有名称,因此无法直接通过函数名来调用,而是通过变量或表达式来调用。
匿名函数定义可以通过两种方式:函数表达式 和 箭头函数。
-
示例一(函数表达式):
var add = function (a,b){
return a + b;
}
-
示例二(箭头函数):
var add = (a,b) => {
return a + b;
}
上述匿名函数声明好了之后,是将这个函数赋值给了add变量。 那我们就可以直接通过add函数直接调用,调用代码如下:
let result = add(10,20);
alert(result);
而箭头函数这种形式,在现在的前端开发中用的会更多一些。
自定义对象
在 JavaScript 中自定义对象特别简单,其语法格式如下:
let 对象名 = {
属性名1: 属性值1,
属性名2: 属性值2,
属性名3: 属性值3,
方法名称: function(形参列表){}
};
我们可以通过如下语法调用属性:
对象名.属性名
通过如下语法调用函数:
对象名.方法名()
代码演示:
<script>
//自定义对象
let user = {
name: "Tom",
age: 10,
gender: "男",
sing: function(){
console.log("悠悠的唱着最炫的民族风~");
}
}
console.log(user.name);
user.eat();
<script>
上述函数定义的语法可以简化成如下格式:(函数部分简化)
<script>
//自定义对象
let user = {
name: "Tom",
age: 10,
gender: "男",
sing(){
console.log("悠悠的唱着最炫的民族风~");
}
}
console.log(user.name);
user.eat();
<script>
JSON
JSON对象:JavaScript Object Notation,JavaScript对象标记法。JSON是通过JavaScript标记法书写的文本。其格式如下:
{
"key":value,
"key":value,
"key":value
}
其中,key必须使用引号并且是双引号标记,value可以是任意数据类型。
而由于语法简单,层级结构鲜明,现多用于作为数据载体,在网络中进行数据传输。
代码演示:
//3. JSON - JS对象标记法
let person = {
name: 'itcast',
age: 18,
gender: '男'
}
alert(JSON.stringify(person)); //js对象 --> json字符串
let personJson = '{"name": "heima", "age": 18}';
alert(JSON.parse(personJson).name);
API说明:
JSON.stringify(...):作用就是将js对象,转换为json格式的字符串。
JSON.parse(...):作用就是将json格式的字符串,转为js对象。
流程控制
在JS中,当然也存在对应的流程控制语句。常见的流程控制语句如下:
-
if ... else if ... else ...
-
switch
-
for
-
while
-
do ... while
JS DOM
DOM介绍
DOM:Document Object Model 文档对象模型。也就是 JavaScript 将 HTML 文档的各个组成部分封装为对象。
DOM 其实我们并不陌生,之前在学习 XML 就接触过,只不过 XML 文档中的标签需要我们写代码解析,而 HTML 文档是浏览器解析。封装的对象分为
-
Document:整个文档对象
-
Element:元素对象
-
Attribute:属性对象
-
Text:文本对象
-
Comment:注释对象
那么我们学习DOM技术有什么用呢?主要作用如下:
-
改变 HTML 元素的内容
-
改变 HTML 元素的样式(CSS)
-
对 HTML DOM 事件作出反应
-
添加和删除 HTML 元素
DOM操作
-
DOM的核心思想:将网页的内容当做对象来处理,标签的所有属性在该对象上都可以找到,并且修改这个对象的属性,就会自动映射到标签身上。
-
document对象
-
网页中所有内容都封装在document对象中
-
它提供的属性和方法都是用来访问和操作网页内容的,如:document.write(…)
-
-
DOM操作步骤:
-
获取DOM元素对象
-
操作DOM对象的属性或方法 (查阅文档)
-
-
我们可以通过如下两种方式来获取DOM元素。
-
根据CSS选择器来获取DOM元素,获取到匹配到的第一个元素:
document.querySelector('CSS选择器'); -
根据CSS选择器来获取DOM元素,获取匹配到的所有元素:
document.querySelectorAll('CSS选择器');
-
注意:获取到的所有元素,会封装到一个NodeList节点集合中,是一个伪数组(有长度、有索引的数组,但没有push、pop等数组方法)
代码演示:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>JS-DOM</title>
</head>
<body>
<h1 id="title1">11111</h1>
<h1>22222</h1>
<h1>33333</h1>
<script>
//1. 修改第一个h1标签中的文本内容
//1.1 获取DOM对象
// let h1 = document.querySelector('#title1');
//let h1 = document.querySelector('h1'); // 获取第一个h1标签
let hs = document.querySelectorAll('h1');
//1.2 调用DOM对象中属性或方法
hs[0].innerHTML = '修改后的文本内容';
</script>
</body>
</html>
JS 事件监听
事件介绍
什么是事件呢?HTML事件是发生在HTML元素上的 “事情”,例如:
-
按钮被点击
-
鼠标移到元素上
-
输入框失去焦点
-
按下键盘按键
-
........
而我们可以给这些事件绑定函数,当事件触发时,可以自动的完成对应的功能,这就是事件监听。
JS事件是JS非常重要的一部分,接下来我们进行事件的学习。那么我们对于JavaScript事件需要学习哪些内容呢?我们得知道有哪些常用事件,然后我们得学会如何给事件绑定函数。
所以主要围绕2点来学习:①. 事件监听、②. 常用事件
事件监听语法
JS事件监听的语法:
事件源.addEventListener('事件类型', 要执行的函数);
在上述的语法中包含三个要素:
-
事件源: 哪个dom元素触发了事件, 要获取dom元素
-
事件类型: 用什么方式触发, 比如: 鼠标单击 click, 鼠标经过 mouseover
-
要执行的函数: 要做什么事
演示:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>JS-事件-事件绑定</title>
</head>
<body>
<input type="button" id="btn1" value="点我一下试试1">
<input type="button" id="btn2" value="点我一下试试2">
<script>
document.querySelector("#btn1").addEventListener('click', ()=>{
alert("按钮1被点击了...");
})
</script>
</body>
</html>
JavaScript对于事件的绑定还提供了另外2种方式(早期版本):
1). 通过html标签中的事件属性进行绑定
例如一个按钮,我们对于按钮可以绑定单机事件,可以借助标签的onclick属性,属性值指向一个函数。
<input type="button" id="btn1" value="点我一下试试1" onclick="on()">
<script>
function on(){
alert('试试就试试')
}
</script>
2). 通过DOM中Element元素的事件属性进行绑定
依据我们学习过得DOM的知识点,我们知道html中的标签被加载成element对象,所以我们也可以通过element对象的属性来操作标签的属性。
例如一个按钮,我们对于按钮可以绑定单机事件,可以通过DOM元素的属性,为其做事件绑定。
<body>
<input type="button" id="btn1" value="点我一下试试1">
<script>
document.querySelector('#btn1').onclick = function(){
alert("按钮2被点击了...");
}
</script>
</body>
整体代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>JS-事件-事件绑定</title>
</head>
<body>
<input type="button" id="btn1" value="事件绑定1">
<input type="button" id="btn2" value="事件绑定2">
<script>
document.querySelector("#btn1").addEventListener('click', ()=>{
alert("按钮1被点击了...");
})
document.querySelector('#btn2').onclick = function(){
alert("按钮2被点击了...");
}
</script>
</body>
</html>
addEventListener 与 on事件 区别:
-
on方式会被覆盖,addEventListener 方式可以绑定多次,拥有更多特性,推荐使用 addEventListener .
常见事件
上面案例中使用到了事件 click、mouseenter、mouseleave,那都有哪些事件类型供我们使用呢?下面就给大家列举一些比较常用的事件属性:

示例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>JS-事件-常见事件</title>
</head>
<body>
<form action="" style="text-align: center;">
<input type="text" name="username" id="username">
<input type="text" name="age" id="age">
<input id="b1" type="submit" value="提交">
<input id="b2" type="button" value="单击事件">
</form>
<br><br><br>
<table width="800px" border="1" cellspacing="0" align="center">
<tr>
<th>学号</th>
<th>姓名</th>
<th>分数</th>
<th>评语</th>
</tr>
<tr align="center">
<td>001</td>
<td>张三</td>
<td>90</td>
<td>很优秀</td>
</tr>
<tr align="center" id="last">
<td>002</td>
<td>李四</td>
<td>92</td>
<td>优秀</td>
</tr>
</table>
<script>
//click: 鼠标点击事件
document.querySelector('#b2').addEventListener('click', () => {
console.log("我被点击了...");
})
//mouseenter: 鼠标移入
document.querySelector('#last').addEventListener('mouseenter', () => {
console.log("鼠标移入了...");
})
//mouseleave: 鼠标移出
document.querySelector('#last').addEventListener('mouseleave', () => {
console.log("鼠标移出了...");
})
//keydown: 某个键盘的键被按下
document.querySelector('#username').addEventListener('keydown', () => {
console.log("键盘被按下了...");
})
//keydown: 某个键盘的键被抬起
document.querySelector('#username').addEventListener('keyup', () => {
console.log("键盘被抬起了...");
})
//blur: 失去焦点事件
document.querySelector('#age').addEventListener('blur', () => {
console.log("失去焦点...");
})
//focus: 元素获得焦点
document.querySelector('#age').addEventListener('focus', () => {
console.log("获得焦点...");
})
//input: 用户输入时触发
document.querySelector('#age').addEventListener('input', () => {
console.log("用户输入时触发...");
})
//submit: 提交表单事件
document.querySelector('form').addEventListener('submit', () => {
alert("表单被提交了...");
})
</script>
</body>
</html>
1633

被折叠的 条评论
为什么被折叠?



