目录
【JavaScript基础】
【概述】:
JavaScript 是一门跨平台、面向对象的脚本语言,来控制网页行为的,它能使网页可交互
【JavaScript引入方式】
1、内部脚本
将JS代码定义在HTML页面中
在HTML中,JavaScript代码必须位于<script>与</script>标签之间
<script>
alert("hello JS ~");
</script>
例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script>
alert("hello js");
</script>
</body>
</html>
【注意】:
- 在 HTML 文档中可以在任意地方,放置任意数量的<script>
- 一般把脚本置于 <body> 元素的底部,可改善显示速度,因为脚本执行会拖慢显示
2、外部脚本
将JS代码定义在外部JS文件中,然后引入到HTML页面中
外部文件:demo.js alert("hello JS ~");
引入外部 js文件 <script src=“../js/demo.js"></script>
例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script src="../js/demo.js"></script>
</body>
</html>
alert("hello js");
【注意】:
- 外部脚本不能包含 <script> 标签
- <script> 标签不能自闭合
【JavaScript语法】
1、输出语句
-
使用 window.alert() 写入警告框
-
使用 document.write() 写入 HTML 输出
-
使用 console.log() 写入浏览器控制台
window.alert("hello JS ~");//弹出警告框
document.write("hello JS ~");//写入HTML
console.log("hello JS ~");//写入控制台
例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script>
window.alert("hello js");
document.write("hello js2");
console.log("hello js3");
</script>
</body>
</html>
2、变量
JavaScript 中用 var 关键字(variable 的缩写)来声明变量
var test = 20;
test = "张三";
JavaScript 是一门弱类型语言,变量可以存放不同类型的值
var:
- 作用域:全局变量
- 变量可以重复定义
let:
- 作用域:代码块内有效
const:
- 用来声明一个只读变量,一旦声明,常量的值就不能改变
【遵守规则】
- 组成字符可以是任何字母、数字、下划线(_)或美元符号($)
- 数字不能开头
- 建议使用驼峰命名
例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script>
{
var age=30;
}
let a=20;
const b=10;
alert(age);
alert(a);
alert(b);
</script>
</body>
</html>
3、数据类型
JavaScript中分为原始类型和引用类型
【分类】:
- number:数字(整数、小数、Not a Number)
- string:字符、字符串,单双引号皆可
- boolean:布尔
- null:对象为空
- undefined:当声明的变量未初始化时,该变量的默认值是undefined
使用typeof运算符可以获取数据类型
alert(typeof age);
例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script>
//number
var age=20;
var price=30;
alert(typeof age);
alert(typeof price);
//string
var ch ='a';
var name ='张三';
var addr ="北京";
alert(typeof ch);
alert(typeof name);
alert(typeof addr);
//boolean
var flag = true;
var flag2 = false;
alert(typeof flag);
alert(typeof flag2);
//null
var obj=null;
alert(typeof obj);
//undefined
var a;
alert(typeof a);
</script>
</body>
</html>
4、运算符
【分类】:
- 一元运算符:++,--
- 算术运算符:+,-,*,/,%
- 赋值运算符:=,+=,-=…
- 关系运算符:>,<,>=,<=,!=,==,===
- 逻辑运算符:&&,||,!
- 三元运算符:条件表达式 ? true_value : false_value
【注意】:
== 和 === :== 会进行类型转换,=== 不会进行类型转换
类型转换:
1、其他类型转为数字:
(1)string:将字符串字面值转为数字。如果字面值不是数字,则转为NaN。一般使用parseInt
方法进行转换
(2)boolean:true 转为1,false 转为0
2、其他类型转为 boolean
(1)number:0和NaN转为false,其他的数字转为true
(2)string:空字符串转为false,其他字符串转为true
(3)null:转为false
(4)undefined:转为false
例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script>
var age1 = 20;
var age2 = "20";
alert(age1 == age2);
alert(age1 === age2);
//var str = +"20";
var str = "20";
alert(parseInt(str) + 1);
var flag = +false;
alert(flag);
var flag2 = 3;
var flag3 = "";
var flag4 = undefined;
if (flag4) {
alert("转为true");
} else {
alert("转为false");
}
</script>
</body>
</html>
5、函数
【概述】:函数(方法)是被设计为执行特定任务的代码块
方式一:
1、定义:JavaScript 函数通过 function 关键词进行定义,语法为:
function functionName(参数1,参数2..){
要执行的代码
}
2、调用:函数名称(实际参数列表);
let result = add(1,2);
例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script>
function add(a, b) {
return a + b;
}
var result = add(1, 2);
alert(result);
</script>
</body>
</html>
方式二:
1、定义:
var functionName = function (参数列表){
要执行的代码
}
2、调用:JS中,函数调用可以传递任意个数参数
let result = add(1,2,3);
例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script>
var add2=function (a,b){
return a+b;
}
var result2 =add2(1,2);
alert(result2)
</script>
</body>
</html>
【注意】:
- 形式参数不需要类型。因为JavaScript是弱类型语言
- 返回值也不需要定义类型,可以在函数内部直接使用return返回即可
【JavaScript对象】
【Array对象】
【定义】
var 变量名 = new Array(元素列表); //方式一 var arr = new Array(1,2,3);
var 变量名 = [元素列表]; //方式二 var arr = [1,2,3];
【访问】
arr[索引] = 值;
arr[0] = 1;
【注意】:JS数组类似于Java集合,长度,类型都可变
例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script>
//定义
//方式一
var arr=new Array(1,2,3);
alert(arr);
//方式二
var arr2=[1,2,3];
alert(arr2);
//访问
arr2[0]=10;
alert(arr2);
//特点:变长变类型
var arr3=[1,2,3];
arr3[10]=10;
alert(arr3[10]);
arr3[5]="hello";
alert(arr3);
</script>
</body>
</html>
【Array属性和方法】
例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script>
//属性
//length:数组中元素的个数
var arr4=[1,2,3];
for (let i = 0; i < arr4.length; i++) {
alert(arr4[i]);
}
//方法:
//push:添加方法
var arr5=[1,2,3];
arr5.push(10);
alert(arr5);
//splice:删除方法(第一个参数为从哪里开始删,第二个参数为输出多少个)
arr5.splice(0,1);
alert(arr5);
</script>
</body>
</html>
【String对象】
【定义】:
var 变量名 = new String(s); //方式一 var str = new String("hello");
var 变量名 = s; //方式二 var str = "hello" ;或var str = 'hello';
例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script>
//定义
//方式一
var str1=new String("abc");
//方式二
var str2="abc";
var str3='abd';
</script>
</body>
</html>
【String属性和方法】
【属性】
【方法】
例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script>
var str=' abd ';
//属性:length
alert(str.length);
//方法:
//trim:去除字符串前后两端的空白字符
alert(1+str.trim()+1);
</script>
</body>
</html>
【自定义对象】
【格式】
var 对象名称 = {
属性名称1:属性值1,
属性名称2:属性值2,
...
函数名称:function (形参列表){}
...
};
例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script>
var person = {
name:"zhangsan",
age:23,
eat:function (){
alert("干饭");
}
}
alert(person.name);
alert(person.age);
person.eat();
</script>
</body>
</html>
【BOM】——Browser Object Model
【定义】
- Browser Object Model——浏览器对象模型
- JavaScript将浏览器的各个组成部分封装成对象
【组成】
- Window:浏览器窗口对象
- Navigator:浏览器对象
- Screen:屏幕对象
- History:历史记录对象
- Location:地址栏对象
【Window】——浏览器窗口对象
【获取】:直接使用window,其中window.可以省略
【window的属性及方法】
【属性】:获取其他BOM对象
【方法】:
【History】——历史记录
【获取】:使用window.history获取,其中window.可以省略
window.history.方法();
history.方法();
【方法】
【Location】——地址栏对象
【获取】:使用window.location获取,其中window.可以省略
window.location.方法();
location.方法();
【属性】
例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script>
window.alert("abc");
alert("bbb");
//confirm
var flag = confirm("确认删除?");
alert(flag);
if(flag){
//删除
}
//定时器
//setTimeout(function,毫秒值);在一定的时间间隔后执行一个function,只执行一次
//setInterval(function,毫秒值);在一定的时间间隔后执行一个function,循环执行
setTimeout(function(){
alert("hehe1");
},3000);
setInterval(function(){
alert("hehe2");
},2000);
//Location对象
document.write("3秒跳转到首页。。。");
setTimeout(function () {
location.href="https://www.baidu.com"
},3000);
</script>
</body>
</html>
【项目示例】——定时切换照片
需求:每隔一秒切换一次图片
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<input type="button" onclick="on()" value="开灯">
<img id="myImage" border="0" src="../img/off.gif" style="text-align:center;">
<input type="button" onclick="off()" value="关灯">
<script>
function on(){
document.getElementById('myImage').src='../img/on.gif';
}
function off(){
document.getElementById('myImage').src='../img/off.gif';
}
var flag=0;
//定时器
setInterval(function (){
if(flag%2===0){
on();
}else {
off();
}
flag++;
},1000);
</script>
</body>
</html>
【DOM】——Document Object Model
【概述】
- Document Object Model ——文档对象模型
- JavaScript将标记语言的各个组成部分封装为对象
W3C DOM 标准被分为 3 个不同的部分:
1.核心 DOM:针对任何结构化文档的标准模型
- Document:整个文档对象
- Element:元素对象
- Attribute:属性对象
- Text:文本对象
- Comment:注释对象
2.XML DOM:针对 XML 文档的标准模型
3.HTML DOM:针对 HTML 文档的标准模型
- Image:<img>
- Button :<input type=‘button’>
【组成】
- Document:整个文档对象
- Element:元素对象
- Attribute:属性对象
- Text:文本对象
- Comment:注释对象
【DOM树】
【Element】——元素对象
【获取】:使用Document对象的方法来获取
- getElementById:根据id属性值获取,返回一个Element对象
- getElementsByTagName:根据标签名称获取,返回Element对象数组
- getElementsByName:根据name属性值获取,返回Element对象数组
- getElementsByClassName:根据class属性值获取,返回Element对象数组
例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<img id="light" src="../img/off.gif"><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">游戏
<br>
<script>
//getElementById:根据id属性值获取,返回一个Element对象
var img = document.getElementById("light");
alert(img);
//getElementsByTagName:根据标签名获取,返回一个Element对象数组
var divs = document.getElementsByTagName("div");
for (let i = 0; i < divs.length; i++) {
alert(divs[i]);
}
//getElementsByName:根据name属性值获取,返回Element对象数组
var hobby = document.getElementsByName("hobby");
for (let i = 0; i < hobby.length; i++) {
alert(hobby[i]);
}
//getElementsByClassName:根据class属性值获取,返回Element对象数组
var cls = document.getElementsByClassName("cls");
for (let i = 0; i < cls.length; i++) {
alert(cls[i]);
}
</script>
</body>
</html>
【Element对象的使用】
查阅文档:
JavaScript 和 HTML DOM 参考手册 (w3school.com.cn)
例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<img id="light" src="../img/off.gif"><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">游戏
<br>
<script>
var img = document.getElementById("light");
img.src = "../img/on.gif"
var divs = document.getElementsByTagName("div");
//style:设置元素css样式
//innerHTML设置元素内容
divs[0].style.color = 'red';
divs[1].innerHTML = '呵呵';
var hobby = document.getElementsByName("hobby");
hobby[0].checked=true;
hobby[1].checked=true;
</script>
</body>
</html>