一、前言
本文着重于对上述技术的了解,并非深入学习前端,更适合后端开发人员作为学习JavaWeb的一个前置了解,在这里各种API和标签都略写,主要讲解最常见的API和标签,其余的API可以使用AI或者其他的资料库自行查询。
资料库这里推荐使用w3school 在线教程。
二、JavaScript
1.引入方式
JavaScript的标签是<script> </script>
将JS引入HTML有两种方法:
1.内部引入:放任何位置都可以 但是一般写在body后面,让用户先看内容(HTML)后看脚本
2.外部引入:引入.js文件
两种方式的格式如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
</body>
<!--
内部引入JS
放任何位置都可以
但是一般写在body后面,让用户先看内容后看脚本
-->
<script>
alert("HELLO JS1");
</script>
<!--
引入外部文件
-->
<script src = "../js/demo.js"></script>
</html>
效果如下:


2.输出语句
这里我们提供三种输出(到浏览器)方式:
其中:alert是写入到浏览器的警告框里面
write直接输出到页面
log写到控制台里面
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
</body>
<script>
window.alert("HELLO JS1");//写入警告框
document.write("HELLO JS2");//写入html页面
console.log("HELLO JS3");//写入浏览器的控制台
</script>
</html>



3.变量
JS语言里面变量只有var和let两种,都是根据自己的值来改变数据类型的。
但是JS是有各种数据类型的,只是是隐式的。
number 数字 string 字符 字符串 boolean 布尔 null 空 undefined 未初始化时的数据类型
var和let都有自己的特点如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
</body>
<script>
//弱类型变量(没有固定的类型)
var test = 20;
test = "yds"
alert(test);
/*
var:
1.作用域:全局变量
2.变量可以重复定义
*/
{
var age = 30;
var age = 20;//覆盖
}
alert(age)
/*
let:
1.作用域:代码块
2.变量不能重复定义
*/
{
let age = 20;//覆盖
}
alert(age);
//const:定义常量(不可改)
const pi = 3.1415926;
pi =3;
</script>
</html>
4.数据类型
可以通过alert(typeof 变量)来获取隐式(真实)数据类型。
下面给出了很多例子,可以自行尝试。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
</body>
<script>
/*
number 数字
string 字符 字符串
boolean 布尔
null 空
undefined 未初始化时的数据类型
*/
//number
// var age = 19;
// var price = 99.9;
// alert(typeof age);
// alert(typeof price);
//string
// var ch = 'a';
// var name = "yds";
// var city = '成都';
// alert(typeof ch);
// alert(typeof name);
// alert(typeof city);
//boolean
// var flag1 = true;
// var flag2 = false
// alert(typeof flag1);
// alert(typeof flag2);
//null
// var obj = null;
// alert(typeof obj);
//undefined
var a;
alert(typeof abc);
</script>
</html>
5.运算符
和Java不同:
==:
1.判断累心是否一样,如果不一样,则进行类型转换
2.再去比较其值
===:全等于
1.判断类型是否一样,如果不一样,直接返回false
2.再去比较其值
其他类型转为number:
1.string:可以在字符串前写上 + 转换,如果字面值不是数字,则转为NaN。 但一般使用parseInt
2.boolean:true -> 1 false -> 0
其他类型转为boolean:
1.number:0和NaN转为false,其他转为true
2.string:空转false,有转true
3.null:false
4.undefined:false
在健壮性判断上JS比Java要更加方便如下:(末尾)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
</body>
<script>
//辨析== 和===
// var age1 = 20;
// var age2 = "20";
// alert(age1 === age2);
//类型转换:
// var str = +"20";
// alert(parseInt(str) + 1);
// var flag1 = +true;
// var flag2 = +false;
// alert(flag1);
// alert(flag2);
var flag = 0;
if(flag){
alert("转为true");
}else{
alert("转为false");
}
//健壮性判断
//Java
// if(str != null && str.length > 0){
//
// }
//JS
// if(str){
//
// }
</script>
</html>
6.流程控制语句
不作赘述,全部和Java相同
7.函数
形式参数不需要 返回类型不需要 调用时可以传递任意参数
有两种语法:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
</body>
<script>
//语法
//第一种
function add(a,b){
return a + b;
}
let result = add(1,5);
alert(result);
//第二种
var add = function (a,b){
return a + b;
}
//试试传递任意参数,按顺序传递形式参数,没有就忽略
let result = add(1,5,8,9,0);
alert(result);
</script>
</html>
8.数组对象
定义和访问和Java略有不同:
值得注意的是:JS中的数组相当于Java中的集合ArrayList,变长变类型,可以自动扩容。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
</body>
<script>
// Array
// 定义
// 法一
var arr = new Array(1,2,3);
alert(arr);
//法二
var arr1 = [1,2,3];
alert(arr1)
//访问
var arr2 = [1,2,3];
arr[0] = 10;
alert(arr2)
//特点,JS中的数组相当于Java中的集合ArrayList,变长变类型
var arr3 = [1,2,3];
arr3[10] = 10;//自动扩容了
alert(arr3[10]);
//变类型
var arr4 = [1,2,3];
arr3[5] = "yds";
alert(arr3);
length
var arr5 = [1,2,3,4,5];
for (let i = 0; i < arr5.length; i++) {
alert(arr5[i]);
}
//方法
//push 添加
//splice 删除
var arr6 = [1,2,3,4,5];
arr6.push(10);
arr6.splice(0,1);
alert(arr6);
</script>
</html>
9.String对象
和Java的String差别不大。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
</body>
<script>
var str1 = new String("abc");
var str2 = "abc";
var str3 = 'abc';
alert(str3.length);
//trim()去除字符串前后两端的空白
var str4 = " abc";
alert(1 + str4.trim() + 1);
</script>
</html>
10.自定义对象
类似于Java的类或者C语言的结构体,定义方式略有不同。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
</body>
<script>
var person = {
name : "yds",
age : 19,
eat: function (){
alert("吃吃吃")
}
};
alert(person.eat());
</script>
</html>
这里我们访问person对象的eat成员变量,运行结果是:

11.BOM
这里主要介绍window对象的几个函数
第一个是定时器
第二个是History
第三个是Location
这里我们给出几个案例来方便了解这些函数的使用:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
</body>
<script>
// window
window.alert("bbb");
//confirm,点击确定返回true,点击取消选择false
confirm("确认删除?");
//定时器: setTimeout: 执行一次
// setInterval() 循环执行
setTimeout(function (){
alert("warning");
},2000);
setInterval(function (){
alert("warning");
},2000)
//定时开关灯
function on() {
alert("on");
}
function off() {
alert("off");
}
setInterval(function (){
on();
setTimeout(function () {},1000);
off()
},1000)
//History
//window.history() : 历史记录
//history.back();
//history.forward();
//Location
//window.location():地址栏对象
alert("跳转");
location.href = "http://www.baidu.com";
//案例:3秒后跳转到首页
document.write("3s后跳转到页面");
setTimeout(function () {
location.href = "http://www.baidu.com";
},3000);
</script>
</html>
12.DOM
这里主要介绍document对象的几个函数。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<img id = "java" src="../imgs/java.jpg"><br>
<div class = "cls">yds</div>
<div class = "cls">yxy</div>
<input type="checkbox" name="hobby">电影
<input type="checkbox" name="hobby">游戏
<input type="checkbox" name="hobby">旅游
<br>
</body>
<script>
//JS通过DOM来对html操作
//getElementById:根据Id获取属性,返回一个element对象
var img = document.getElementById("java");
alert(img);
//getElementsByTagName:根据标签名称获取,返回element对象数组
var divs = document.getElementsByTagName("div");
alert(divs.length);
//遍历数组
for (let i = 0; i <divs.length; i++) {
alert(divs[i]);
}
//getElementsByName,根据name属性值获取,返回element对象数组
var hobbies = document.getElementsByName("hobby");
for (let i = 0; i < hobbies.length; i++) {
alert(hobbies[i]);
}
//getElementsByClassName,根据class属性值获取,返回element对象
var className = document.getElementsByClassName("cls");
for (let i = 0; i < className.length; i++) {
alert(className[i]);
}
//关于img类
var img = document.getElementById("java");
img.src = "../imgs/MySQL.png";
alert(img);
//style:设置元素css样式
var divs = document.getElementsByTagName("div");
for (let i = 0; i < divs.length; i++) {
divs[i].style.color = 'red';
}
//innerHTML:设置元素内容
var divs = document.getElementsByTagName("div");
for (let i = 0; i < divs.length; i++) {
divs[i].innerHTML = '美女帅哥';
}
//checkBox中的checked
var hobbies = document.getElementsByName("hobby");
for (let i = 0; i < hobbies.length; i++) {
hobbies[i].checked = true;//勾选每个多选框
}
</script>
</html>
最终的效果:

13.事件监听
常见事件:
事件名 说明
onclick 鼠标单击事件
onblur 元素失去焦点
onfocus 元素获得焦点
onload 某个页面或图像被完成加载
onsubmit 当表单提交时触发该事件
onkeydown 某个键盘的键被按下
onmouseover 鼠标被移到某元素之上
onmouseout 鼠标从某元素移开
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<input type="button" value="点我" onclick="on()"><br>
<input type="button" value="再点我" id = "btn"><br>
</body>
<script>
//事件绑定
//法一:通过HTML标签中的时间属性进行绑定
function on() {
alert("我被点了");
}
//法二:通过DOM元素属性绑定
function on() {
alert("我被点了");
}
document.getElementById("btn").onclick = function() {
alert("我被点了");
}
</script>
</html>
14.正则表达式
概念:正则表达式定义了字符串组成的规则
定义:
1.直接量:注意不要加引号
var reg = /^\w{6,12}$/;
2.创建 RegExp 对象
var reg = new RegExp("^\w{6,12}$");
方法:
test(str):判断指定字符串是否符合规则,返回 true 或 false
语法:
^:表示开始
$:表示结束
[]:代表某个范围内的单个字符,比如:[0-9]单个数字字符
.:代表任意单个字符,除了换行和行结束符
\w:代表单词字符:字母、数字、下划线(),相当于 [A-Za-z0-9]
\d:代表数字字符:相当于 [0-9]
量词:
+:至少一个 var reg = /^\w+$/;
*:零个或多个
?:零个或一个
{x}:x 个
{m,}:至少 m 个
{m,n}:至少 m 个,最多 n 个
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
</body>
<script>
//这里设置一个正则表达式:意思是输入的字符最少6个最多12个
var reg = /^\w{6,12}$/;
var str = "abcadadafuhfufcvjh"
var flag = reg.test(str);
alert(flag);
</script>
</html>
我们这里随机尝试一个str,来检验这个字符串是否符合正则表达式,得到结果如下:


377

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



