JavaScript 简介
JavaScript(简称 Js)是当前最流行、应用最广泛的客户端 (网页) 脚本语言,用来在网页中添加动态效果与交互功能,在 web 开发中拥有举足轻重的地位。
JavaScript、HTML、CSS 共同构成网页:
- HTML: 用来定义网页内容,例如:标题、正文、图像等;
- CSS: 用来修饰网页组件的外观,例如:颜色、大小、位置、背景等等;
- JavaScript: 用来实时更新网页内容,例如:从服务器中获取数据并更新到网页中,修改某些标签的样式内容,可以让网页变得生动。
JavaScript 历史
JavaScript 原名: LiveScript,是由美国网景 (Netscape Communications Corporation) 开发的一种用于对网页操作的脚本语言,LiveScript 也是面向对象的。后来 sun 公司与网景合作更名为 JavaScript。
脚本语言: 无需编译,可以由某种解释器直接执行 (sql python html css JavaScript),直接由某种解释器 (引擎) 解释执行,逐行从上到下解释执行。
JavaScript 和 Java 完全是两种不同的语言
区别
- JavaScript 是嵌入在网页中,对网页进行各种操作的,是一种脚本语言;
- Java 是一种后端的高级语言,是需要编译的。
JavaScript 特点
- 解释型脚本语言: JavaScript 是一种解释型脚本语言,与 C、C++ 等语言需要先编译再运行不同,使用 JavaScript 编写的代码不需要编译,可以直接运行。
- 面向对象: JavaScript 是一种面向对象语言,使用 JavaScript 不仅可以创建对象,也能操作使用已有的对象。
- 弱类型: JavaScript 是一种弱类型的编程语言,对使用的数据类型没有严格的要求,例如您可以将一个变量初始化为任意类型,也可以随时改变这个变量的类型。
- 动态性: JavaScript 是一种采用事件驱动的脚本语言,它不需要借助 Web 服务器就可以对用户的输入做出响应,例如我们在访问一个网页时,通过鼠标在网页中进行点击或滚动窗口时,通过 JavaScript 可以直接对这些事件做出响应。
- 跨平台: JavaScript 不依赖操作系统,在浏览器中就可以运行。因此一个 JavaScript 脚本在编写完成后可以在任意系统上运行,只需要系统上的浏览器支持 JavaScript 即可。
第一个 JavaScript 程序
JavaScript 程序不能独立运行,只能在宿主环境中执行。一般情况下可以把 JavaScript 代码放在网页中,借助浏览器环境来运行。
在 HTML 文档中嵌入 JavaScript 代码
在 HTML 页面中嵌入 JavaScript 脚本需要使用 <script> 标签,我们可以在 <script> 标签中编写 JavaScript 代码,具体步骤如下:
- 新建 HTML 文档;
- 在
<head> 标签或者 <body> 标签中插入 <script> 标签;
- 在
<script> 标签中写 JavaScript 代码。
示例:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script>
alert("你好 JavaScript")
</script>
</head>
<body>
</body>
</html>
注:alert('welcome!'); 提示对话框。
在脚本文件中编写 JavaScript 代码
JavaScript 代码不仅可以放在 HTML 文档中也可以放在 JavaScript 脚本文件中。JavaScript 脚本文件,扩展名是 .js,使用任何文本编辑器都可以编辑。
具体步骤如下:
- 新建
.js 文本;
- 打开文本编写 JavaScript 文本
alert("你好");;
- 保存 JavaScript 文件,并连接 HTML 文档:
<script type="text/javascript" src="test.js"></script>;
- 运行 HTML 文档。
注: 定义 src 属性的 <script> 标签不应再包含 JavaScript 代码。如果嵌入了代码,则只会下载并执行外部 JavaScript 文件,嵌入代码将被忽略。
JavaScript 代码执行顺序
JavaScript 代码可以写在 HTML 文档 <head> 标签与 <body> 标签中,写在不同标签中的执行顺序不同。
示例
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script>
alert("写在<head>标签中");
</script>
</head>
<body>
<script>
alert("写在<body>标签中");
</script>
</body>
</html>
由效果图可以看出,在 HTML 文档中先执行在 <head> 标签中的 JavaScript 代码,后执行 <body> 标签中的代码。
基本语法
1. 变量
声明变量用 var 关键字:
var name;
声明变量的同时对其赋值:
var name = "小明";
2. 数据类型
- 数值型 (number): 其中包括整型数和浮点型数。
- 布尔型 (boolean): 逻辑值,true 或 false。
- 字符串型:有单个或者多个字符组成的。字符串使用单引号或者双引号来说明的。
- undefined 类型:变量没用赋值的情况下默认类型,值为 undefined。
- Object 类型
3. 算术运算符
算数运算符用来执行常见的数学运算,例如加法、减法、乘法、除法等。
var x = 10; var y = 4;
console.log("x + y =", x + y);
console.log("x - y =", x - y);
console.log("x * y =", x * y);
console.log("x / y =", x / y);
console.log("x % y =", x % y);
注:在 JavaScript 中的不同
var a = "10"; var b = 5; var c = 10; var d = "a";
4. 赋值运算
赋值运算符用来为变量赋值。
var x = 10; x += 20; console.log(x);
var x = 12, y = 7; x -= y; console.log(x);
x = 5; x *= 25; console.log(x);
x = 50; x /= 10; console.log(x);
x = 100; x %= 15; console.log(x);
5. 字符串运算符
JavaScript 中的 + 和 += 运算符除了可以进行数学运算外,还可以用来拼接字符串。
var x = "Hello "; var y = "World!";
var z = x + y; console.log(z);
x += y; console.log(x);
6. 自增、自减运算符
自增、自减运算符用来对变量的值进行自增 (+1)、自减 (-1) 操作。
var x;
x = 10; console.log(++x);
x = 10; console.log(x++);
x = 10; console.log(--x);
x = 10; console.log(x--);
7. 比较运算符
比较运算符会比较左右两侧的数据,最后返回一个布尔值 (true 或者 false)。
var x = 25; var y = 35; var z = "25";
console.log(x == z);
console.log(x === z);
console.log(x != y);
console.log(x !== z);
console.log(x < y);
console.log(x > y);
console.log(x <= y);
console.log(x >= y);
8. 逻辑运算符
逻辑运算符通常来组合多个表达式,逻辑运算符的运算是一个布尔值 (true/false)。
var year = 2021;
if((year % 400 == 0) || ((year % 100 != 0) && (year % 4 == 0))){
console.log(year + " 年是闰年。");
} else{
console.log(year + " 年是平年。");
}
9. 条件运算符
JavaScript 还包含了基于某些条件对变量进行赋值的条件运算符。
语法:
var result = (条件表达式)?结果 1:结果 2
当条件成立返回 ? 后的内容,否则返回 : 后的内容。
代码示例:
var c = 1; var b = 2; var a = c > b ? c : b;
10. 控制语句
选择结构
- 单一选择结构 (if)
- 二路选择结构 (if/else)
- 多路选择结构 (switch)
循环结构
- 由计数器控制的循环 (for)
- 在循环的开头测试表达式 (while)
- 在循环的末尾测试表达式 (do/while)
- break continue
JavaScript 中的选择结构和其他语言是相通的也是一样的。
函数
1. 定义函数
函数定义的基本语法:
function functionName([arguments]) {
javascript statements;
[return expression]
}
function: 表示函数定义的关键字;
functionName: 表示函数名;
arguments: 表示传递给函数的参数列表,各个参数之间用逗号隔开,可以为空;
statements: 表示实现函数功能的函数体;
return expression: 表示函数将返回 expression 的值,同样是可选的语句。
代码示例:
function sayHello(name){
alert("Hello " + name);
return 0;
}
2. 函数调用
函数调用:
- 在
<script> 标签中直接调用
- 在其他函数中调用
- 通过组件
代码演示:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script>
function test(text){
alert(text);
}
test("函数在<script>标签中调用");
function a(){
test("函数在其他函数中调用");
}
a();
</script>
</head>
<body>
<input type="button" value="测试" onclick="test('组件调用函数')"/>
</body>
</html>
3. 全局函数
parseInt(arg) 把括号内的内容转换成整数之后的值。如果括号内是字符串,则字符串开头的数字分别转换成整数,如果以字母开头,则返回 'NaN';
parseFloat(arg) 把括号内的字符串转换成浮点数之后的值,字符串开头的数字部分被转换成浮点数,如果以字母开头,则返回'NaN';
typeof (arg) 返回 arg 值的数据类型;
eval(arg) 可运算某个字符串;
alert(String) 可以在浏览器中弹出一个提示框,里面的内容是 String;
console.log(String) 在控制面板上打印 String。
事件
JS 事件(event)是当用户与网页进行交互时发生的事情,例如单击某个链接或按钮,在文本框中输入文本、按下键盘上的某个按键、移动鼠标等等。当事件发生时,您可以使用 JavaScript 中的事件处理程序(也可称为事件监听器)来检测并执行某些特定的程序。
常用事件:
onclick() 鼠标点击时
onblur() 标签失去焦点
onfocus() 标签获得焦点
onmouseover() 鼠标被移到某标签之上
onmouseout() 鼠标从某标签移开
onload() 是在网页加载完毕后触发相应的事件处理程序
onchange() 是指当前标签失去焦点并且标签的内容发生改变时触发事件处理程序
代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<div>
onclick:<input type="button" value="onclick" onclick="test('pink')" />
<br />
onblur:<input type="text" onblur="test('red')" />
<br />
onfocus:<input type="text" onfocus="test('blue')"/>
<br />
onmouseover:<input type="text" onmouseover = "test('black')"/>
<br />
onmouseout:
onchange:
内置对象
1. String 字符串
属性
方法
charAt(n): 返回该字符串位于第 n 位的单个字符。
indexOf(char): 返回指定 char 首次出现的位置。
lastIndexOf(char): 跟 indexOf() 相似,不过是从后边开始找。
substring(start,end): 返回原字符串的子字符串,该字符串是原字符串从 start 位置到 end 位置的前一位置的一段。
substr(start,length): 返回原字符串的子字符串,该字符串是原字符串从 start 位置开始,长度为 length 的一段。
split(分隔符字符): 返回一个数组,该数组是从字符串对象中分离开来的,决定了分离的地方,它本身不会包含在所返回的数组中。
var string = new String("String 字符串 r2323");
console.log(string.charAt(2));
console.log(string.indexOf('r'));
console.log(string.lastIndexOf('r'));
console.log(string.substring(2,5));
console.log(string.substr(2,3));
console.log(string.split('r'));
2. Array 数组
数组是值的有序集合,数组中的每个值称为一个元素,每个元素在数组中都有一个数字位置,称为索引,索引从 0 开始,依次递增。在 JavaScript 中,您可以使用 Array 对象定义数组,此外,Array 对象中还提供了各种有关数组的属性和方法。
创建 Array 对象的语法格式如下:
var arr = new Array();
这样就定义了一个空数组。以后要添加数组元素,就用:
[下标] = 值;
如果想在定义数组的时候直接初始化数据,请用:
var arr = new Array(, , ...);
还可以 var arr = [, , ...];
var a = new Array();
a[0] = 1;
a[1] = "aaa";
a[5] = true;
var b = new Array(1,2,3,4,5);
var a = [1,2,3,4,5];
a[5] = 3;
属性
方法
join(): 返回一个字符串,该字符串把数组中的各个元素串起来,用置于元素与元素之间。
reverse(): 使数组中的元素顺序反过来。如果对数组 [1, 2, 3] 使用这个方法,它将使数组变成:[3, 2, 1]。
sort(): 使数组中的元素按照一定的顺序排列。如果不指定,则按字母顺序排列。
- 对数字排序需要调用排序函数。
function sortNumber(a,b){ return a - b; }
代码演示:
var arr = [1, 11, 12, 55, 66, 8, 7, 9];
console.log(arr.join());
var str = "Hello World";
var reversedStr = str.split("").reverse().join("");
console.log(reversedStr);
console.log(arr.sort());
arr.sort(function(a, b) { return a - b; });
console.log(arr);
arr.sort(function(a, b) { return b - a; });
console.log(arr);
3. Date
获取日期
new Date() 返回当日的日期和时间
getFullYear() 返回四位数字年份
getDate() 返回一个月中的某一天 (1 ~ 31)
getMonth() 返回月份 (0 ~ 11)
getDay() 返回一周中的某一天 (0 ~ 6)
getHours() 返回 Date 对象的小时 (0 ~ 23)
getMinutes() 返回 Date 对象的分钟 (0 ~ 59)
getSeconds() 返回 Date 对象的秒数 (0 ~ 59)
代码演示:下代码是一个简单时间表的制作
<!DOCTYPE html>
<html>
<head>
<title></title>
<script>
function addTextToDiv() {
var myDiv = document.getElementById('myDiv');
var currentDate = new Date();
var year = currentDate.getFullYear();
var month = currentDate.getMonth() + 1;
var day = currentDate.getDate();
var hour = currentDate.getHours();
var minutes = currentDate.getMinutes();
var seconds = currentDate.getSeconds();
myDiv.innerHTML = year + "年" + month + "月" + day + "日 " + hour + ":" + minutes + ":" + seconds;
}
setInterval("addTextToDiv()",1000);
</script>
</head>
<body onload="addTextToDiv()">
<div>
4. Math
Math 对象,提供对数据的数学计算。
属性
方法
Math.abs(x) 绝对值计算;
Math.pow(x,y) 数的幂;x 的 y 次幂
Math.sqrt(x) 计算平方根;
Math.ceil(x) 对一个数进行上舍入
Math.floor(x) 对一个数进行下舍入
Math.round(x) 把一个数四舍五入为最接近的整数
Math.random() 返回 0 ~ 1 之间的随机数
Math.max(x,y) 返回 x 和 y 中的最大值
Math.min(x,y) 返回 x 和 y 中的最小值
Html DOM
- DOM 是 Document Object Model 文档对象(网页中的标签)模型的缩写。
- 通过 html dom,可用 JavaScript 操作 html 文档的所有标签。
1. 查找元素
如果我们想对标签进行操作,我们就得找到他们,那我们怎么找到他们呢?
有四种方法可以找到他们:
- 通过 id 找到 HTML 标签:
document.getElementById("id");
- 通过标签名找到 HTML 标签:
document.getElementsByTagName("p");
- 通过类名找到 HTML 标签:
document.getElementsByClassName("p");
- 通过 name 找到 HTML 标签:
document.getElementsByName("name");
2. 改变 HTML
Html dom 允许 JavaScript 改变 html 标签的内容。改变 HTML 标签的属性 document.getElementById("username").value="new value";
代码演示:演示代码就让通过 js 修改按钮的 value 值,让按钮的 value 值从测试变到按钮
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script>
function test(){
document.getElementById("button").value = "按钮";
}
</script>
</head>
<body>
<input type="button" value="测试" onclick="test()"/>
</body>
</html>
代码演示:修改图片
document.getElementById("image").src="new.jpg";
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script>
function test(){
document.getElementById("img").src = "img/3.jpg";
}
</script>
</head>
<body>
<input type="button" value="测试" onclick="test()"/>
<img src="img/1.jpg"/>
</body>
</html>
修改 HTML 内容的最简单的方法是使用 innerHTML 属性 document.getElementById("div").innerHTML=new HTML
代码演示:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script>
function test(){
document.getElementById("div").innerHTML = "加油胜利就在前方";
}
</script>
</head>
<body>
<input type="button" value="测试" onclick="test()"/>
<div>你好,登山者</div>
</body>
</html>
这里只是举例说明了这几个,我们还有更多的操作,自己动动手,去发现更多吧。
3. 改变 CSS
html dom 允许 JavaScript 改变 html 标签的样式。
这里演示上面的文案修改颜色
代码演示:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script>
function test(){
document.getElementById("div").innerHTML = "加油胜利就在前方";
}
function color(){
document.getElementById("div").style.color = "pink";
}
</script>
</head>
<body>
<input type="button" value="测试" onclick="test()"/>
<div>你好,登山者</div>
<input type="button" value="修改颜色" onclick="color()"/>
</body>
这里用一个实例:使一个 div 的背景颜色修改并且循环。
代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script>
var color = ['red','green','blue'];
var i = 0;
function test(){
var obj1 = document.getElementById("text");
var obj2 = document.getElementById("button");
obj1.style.backgroundColor = color[i];
i++;
if(i==color.length){ i=0; }
obj2.value = color[i];
}
</script>
</head>
<body>
<div></div>
<input type="button" value="red" onclick="test()"/>
</>
计时
通过使用 JavaScript,我们有能力做到在一个设定的时间间隔之后来执行代码,而不是在函数被调用后立即执行。我们称之为计时事件。
方法:
setTimeout("函数","时间") 未来的某时执行代码
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>setTimeout 示例</title>
<script>
function showMessage() {
alert("这是一个 setTimeout 示例!");
}
setTimeout("showMessage()", 3000);
</script>
</head>
<body>
<h1>setTimeout 示例</h1>
<p>页面加载后将在 3 秒后显示一条消息。</p>
</body>
</html>
clearTimeout() 取消 setTimeout()
代码演示:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>setTimeout 和 clearTimeout 示例</title>
<script>
var timeoutID;
function showMessage() {
alert("这是一个 setTimeout 示例!");
}
function setupTimeout() {
timeoutID = setTimeout(showMessage, 3000);
}
function cancelTimeout() {
clearTimeout(timeoutID);
alert("定时器已取消!");
}
</script>
</head>
<body>
<h1>setTimeout 和 clearTimeout 示例</h1>
<p>页面加载后将在 3 秒后显示一条消息。</p>
<button onclick="setupTimeout()">设置定时器</button>
<button onclick="cancelTimeout()">取消定时器
setInterval("函数","时间") 每隔指定时间重复调用
clearInterval() 取消 setInterval()
代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<input type="text"/>
<br />
<br />
<input type="button" value="开始" onclick="startTime()"/>
<input type="button" value="停止" onclick="stopTime()"/>
<input type="button" value="复位" onclick="fuwei()"/>
<script>
var num = 0;
var textobj = document.getElementById("text");
textobj.value = 0;
var index;
(){
num++;
textobj. = num;
}
(){
index = (,);
}
(){
(index);
}
(){
num = ;
textobj. = ;
}