文章目录
一.JavaScript和html代码结合
1.第一种方式
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
alert("hello javaScript!");
</script>
</head>
2.第二种方式
<script type="text/javascript" src="hello.js"></script>
hello.js
alert("2022 hello!");
二.变量
数值:number
字符串:string
对象:object
布尔:boolean
函数:function
特殊的值:undefined未赋予初始值的默认值,null空值,NAN非数字非数值
<script type="text/javascript">
let i;
alert(i);/*undefine*/
i=12;
alert(typeof i);/*number*/
i="abc";
alert(typeof i);/*string*/
let a=12;
let b="abc";
alert(a*b);/*NaN*/
</script>
1.关系运算
等于:== 简单的做字面值的比较
全等于:=== 除了字面值的比较还有变量的类型
<script type="text/javascript">
let a="12";
let b=12;
alert(a==b);/*true*/
alert(a===b);/*false*/
</script>
2.逻辑运算
且&& 或|| 反!
所有的变量都可作为一个boolean变量去使用
0、null、undefine、""(空串)都认为是false
&&
全真:返回最后一个表达式的值
假:返回第一个为假的表达式
||:
全假:返回最后一个表达式的值
真:返回第一个为真的表达式
三.数组
<script type="text/javascript">
let arr=[];/*定义一个空数组*/
alert(arr.length);//0
/*JavaScript语言中的数组,只要我们通过数组下标赋值,那么最大的下标值,就会自动的给数组扩容操作*/
arr[2]="abc";
alert(arr.length);//3
alert(arr[1]);//undefine
</script>
<script type="text/javascript">
let arr=[1,"abc",true];
for (let i = 0; i < arr.length; i++) {
alert(arr[i]);
}
</script>
四.函数
1.函数定义的方式
方式一
<script type="text/javascript">
function sum(num1,num2){
let res=num1+num2;
return res;
}
alert(sum(20,30));
</script>
方式二
<script type="text/javascript">
let sum=function(num1,num2){
let res=num1+num2;
return res;
}
alert(sum(20,30));
</script>
函数不允许重载,一样的定义会覆盖上一次
2.隐形参数arguments
<script type="text/javascript">
function sum(num1,num2){
let res=0;
for (let i = 0; i < arguments.length; i++) {
if (typeof arguments[i]=="number")
res+=arguments[i];
}
return res;
}
alert(sum(1,2,3,4,5,6,7,"abc",8,9,10));//55
</script>
五.JS中的自定义对象
1.Object定义对象
<script type="text/javascript">
let obj = new Object();
obj.name="张三";
obj.age=18;
obj.show=function(){
alert("name:"+this.name+", age:"+this.age);
}
obj.show();
</script>
2.{}定义对象
<script type="text/javascript">
let obj={
name:"张三",
age:18,
show:function() {
alert("name:" + this.name + ", age:" + this.age)
}
};
obj.show();
</script>
六.JS中的事件
事件的注册:告诉浏览器,事件响应后,需要执行的操作代码
静态注册:通过HTML标签的事件属性直接赋予事件响应后的代码
动态注册:通过js代码得到的标签DOM对象,再通过DOM对象.事件名=function(){}这种形式赋予事件响应后的代码
1.onload加载完成事件
常用于页面js代码初始化
静态注册
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
function onloadFun(){
alert('静态注册onload事件');
}
</script>
</head>
<body onload="onloadFun()">
</body>
动态注册
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
window.onload=function (){
alert('动态注册的onload事件');
}
</script>
</head>
<body>
</body>
2.onclick单击事件
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
function onclickFun(){
alert("静态注册onclick事件");
}
window.onload=function (){
let obj=document.getElementById("btn01");
obj.onclick=function () {
alert('动态注册onload事件');
}
}
</script>
</head>
<body>
<button onclick="onclickFun()">按钮1</button>
<button id="btn01">按钮2</button>
</body>
3.onblur失去焦点事件
常用于输入框失去焦点后验证其输入是否合法
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
function onblurFun(){
console.log("静态注册onblur事件");
//console控制台对象,专门用来向浏览器的控制台打印输出,用于测试使用
//log是打印的方法
}
window.onload=function (){
let obj=document.getElementById("password");
obj.onblur=function () {
console.log("动态注册onblur事件");
}
}
</script>
</head>
<body>
用户姓名:<input type="text" onblur="onblurFun()"><br>
用户密码:<input type="text" id="password"><br>
</body>
4.onchange内容发生改变事件
下拉列表和输入框内容发生改变后操作
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
function onchangeFun(){
alert("姓名已经改变了!");
}
window.onload=function (){
let obj=document.getElementById("num");
obj.onchange=function (){
alert("数字已经改变了!");
}
}
</script>
</head>
<body>
请选择正确的姓名:
<select onchange="onchangeFun()">
<option>张三</option>
<option>李四</option>
<option>王五</option>
</select>
<br>
请选择正确的数字:
<select id="num">
<option>1</option>
<option>2</option>
<option>3</option>
</select>
</body>
5.onsubmit表单提交事件
验证表单项是否合法,如果不合法则阻止提交
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
function onsubmitFun(){
alert("静态注册onsubmit事件");
return false;
}
window.onload=function (){
let obj=document.getElementById("form");
obj.onsubmit=function (){
alert("动态注册onsubmit事件");
return false;
}
}
</script>
</head>
<body>
<form action="http://localhost:8080" method="get" onsubmit="return onsubmitFun()">
<input type="submit" value="静态注册">
</form>
<form action="http://localhost:8080" method="get" id="form">
<input type="submit" value="动态注册">
</form>
</body>
七.DOM模型
1.验证用户名是否有效
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
function onclickFun() {
let obj=document.getElementById("usrname");
let usrName=obj.value;
let patt=/^\w{5,12}$/;
let tipe=document.getElementById("tipe");
/*test方法用于测试某个字符串,是不是匹配规则*/
if(patt.test(usrName)){
tipe.innerHTML="用户名合法!";
}else{
tipe.innerHTML="用户名不合法!";
}
}
</script>
</head>
<body>
<!--验证规则:必须由数字,字母,下划线组成,长度5-12-->
用户名:<input type="text" id="usrname">
<span style="color: red" id="tipe"></span>
<button onclick="onclickFun()">校验</button>
</form>
</body>
2.正则表达式
字符 | 描述 |
---|---|
[abc] | 查找方括号之间的任何字符。 |
[0-9] | 查找任何从 0 至 9 的数字。 |
(xly) | 查找任何以l分隔的选项。 |
\w | 包括大写字母、小写字母、下划线、数字。 |
\d | 查找数字。 |
n+ | 匹配任何包含至少一个 n 的字符串。 |
n* | 匹配任何包含零个或多个 n 的字符串。 |
n? | 匹配任何包含零个或一个 n 的字符串。 |
n{X} | 匹配包含X个连续的 n 的字符串。 |
n{X,Y} | 匹配包含X-Y个连续的 n 的字符串。 |
n$ | 匹配以n结尾的字符串。 |
n^ | 匹配以n开头的字符串。 |
注意:^……$表示从头到尾检查
常用正则表达式
3.getElementsByName方法
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
function clickAll() {
let hobbies=document.getElementsByName("hobby");
for (let i = 0; i < hobbies.length; i++) {
hobbies[i].checked=true;
}
}
function clickNone(){
let hobbies=document.getElementsByName("hobby");
for (let i = 0; i < hobbies.length; i++) {
hobbies[i].checked=false;
}
}
function clickReverse(){
let hobbies=document.getElementsByName("hobby");
for (let i = 0; i < hobbies.length; i++) {
hobbies[i].checked=!hobbies[i].checked;
}
}
</script>
</head>
<body>
兴趣爱好:
<input type="checkbox" name="hobby" value="cpp">c++
<input type="checkbox" name="hobby" value="java">java
<input type="checkbox" name="hobby" value="js">javaScript
<br>
<button onclick="clickAll()">全选</button>
<button onclick="clickNone()">全不选</button>
<button onclick="clickReverse()">反选</button>
</form>
</body>
4.getElementsByTagName方法
将上述例子中的 let hobbies=document.getElementsByName(“hobby”); 改为
let hobbies=document.getElementsByTagName("input");
document对象的三个查询方法:
优先级:id->name->tapName
以上三个方法代码一定要在页面加载完成之后执行,才能查询到标签