前言
1.HTML
就是用来写网页的
就是超文本标记语言
1.1快速入门
标签是根标签,就是开始的地方 head就是头,加载一些资源信息,和展示title标题的地方,比如html快速入门那几个字就是title标题标签 body是身体,就是正文内容,就是乾坤未定那段内容 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/677fb4972c1c4f838ca590da000809a8.png) 桌面新建文件
然后随便选择一个文本编辑器来编辑
这样就成功了
第二个改成红色的
html
<html>
<head>
<title>html快速入门</title>
</head>
<body>
<font color="red">乾坤未定你我皆是黑马~</font>
</body>
</html>
然后我们只需要刷新一下就可以了,不必重新打开文件了
说一下,第一html不区分大小写
一般用小写
第二就是,语法比较松散,可以不写结束标签,颜色可以不加引号
html
<html>
<head>
<title>html快速入门</title>
</head>
<body>
<font color=blue>乾坤未定你我皆是黑马~
</body>
</html>
但是写的时候,还是要专业一点
文件以.htm或者html为扩展名
1.2 基础标签
选中右键检查,就可以查看html相关的代码了
可以在idea里面写代码的
直接就是java的模块就可以了,不用maven
建一个文件夹
在新建html文件
html
<!--<!DOCTYPE html>是html5的一个标识-->
<!DOCTYPE html>
<html lang="en">
<head>
<!-- <meta charset="UTF-8">是用来定义页面字符集的 -->
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>我是标题 h1</h1>
<h2>我是标题 h2</h2>
<h3>我是标题 h3</h3>
<h4>我是标题 h4</h4>
<h5>我是标题 h5</h5>
<h6>我是标题 h6</h6>
</body>
</html>
这里直接点右上角的浏览器就可以了
html
<h1>我是标题 h1</h1>
<h2>我是标题 h2</h2>
<h3>我是标题 h3</h3>
<h4>我是标题 h4</h4>
<h5>我是标题 h5</h5>
<h6>我是标题 h6</h6>
<hr>
代码是自动保存的,所以是同步的,不用刷新
html
<h1>我是标题 h1</h1>
<h2>我是标题 h2</h2>
<h3>我是标题 h3</h3>
<h4>我是标题 h4</h4>
<h5>我是标题 h5</h5>
<h6>我是标题 h6</h6>
<hr>
<font>传智教育</font>
但是过时了
因为文本的样式用CSS来控制,所以过时了
回车
颜色的表示方式,第一英文red,pink
第二就是rgb(值1,值2,值3)三原色的方式,红绿蓝的方式
值的取值范围是0~255
rgb(255,0,0)全红
第三就是#值1值2值3
也是三原色
00~FF的范围
#ff0000
也是全红
这里可以看出没有换行
因为浏览器不会解析换行
html
10月16日至17日,全国公安厅局长座谈会在天津市召开,就进一步深化改革创新,提升公安机关新质战斗力,高水平推进公安工作现代化等工作作出重要部署。<br>
通过聆听大会、分组讨论,参会代表认真学习领会会议精神,统一思想、凝聚共识。先进经验展示、实地考察观摩,大家从中得到新启发、新收获,互学互鉴、共同进步。
所以要手动加上br
html
<p>
10月16日至17日,全国公安厅局长座谈会在天津市召开,就进一步深化改革创新,提升公安机关新质战斗力,高水平推进公安工作现代化等工作作出重要部署。
</p>
<p>
通过聆听大会、分组讨论,参会代表认真学习领会会议精神,统一思想、凝聚共识。先进经验展示、实地考察观摩,大家从中得到新启发、新收获,互学互鉴、共同进步。
</p>
这样的话,就变成了两段
html
代表认真学习领会会<br>
<b>代表认真学习领会会</b>
html
代表认真学习领会会<br>
<b>代表认真学习领会会</b><br>
<i>代表认真学习领会会</i><br>
<u>代表认真学习领会会</u><br>
html
<center><b>代表认真学习领会会</b></center>
center就是居中,而且也过时了
特殊字符的打印要用转义字符
1.3 图片音频视频标签
src就是资源路径
直接把资源复制到html路径下就可以了
视频是mp4,音频是mp3
html
<img src="a.png">
html
<img src="a.png" width="200"height="400">
尺寸单位
1.默认的就是像素,px
2.百分比:就相当于占父元素的%20
父元素就是body
body的范围就是整个框体的范围
html
<img src="a.png" width="20%"height="400">
音频文件到时候就是这样的,写的是video
html
<videosrc="b.mp4"></video>
html
<videosrc="b.mp4" controls="controls"></video>
或者这样
html
<videosrc="b.mp4" controls></video>
html
<video src="b.mp4" controls width="500" height="300"></video>
下面讲一下资源路径,上面我们写的是相对路径
我们也可以写绝对路径,盘符或者网页
点击复制图片地址就可以了
html
<img src="https://inews.gtimg.com/om_bt/Os3eJ8u3SgB3Kd-zrRRhgfR5hUvdwcVPKUTNO6O7sZfUwAA/641" width="50%"height="400">
一般写相对路径,要找html文件和图片的相对位置关系,找到就可以写了
比如一个是xxx/html/02
一个是xxx/html/a.png
相对路径就可以这样
./a.png
./可以省略,默认在当前路径找
html
<img src="./a.png" width="50%"height="400">
一个是xxx/html/02
一个是xxx/html/img/a.png
这样写
./img/a.png
一个是xxx/html/02
一个是xxx/img/a.png
这样写
.../img/a.png
1.4 超链接标签
href就是资源路径
html
<a href="https://www.itcast.cn">点我有惊喜</a>
_self是默认值
html
<a href="https://www.itcast.cn" target="_blank">点我有惊喜</a>
跳转到外部资源用这个
1.5 列表标签
html
<OL>
<li>咖啡</li>
<li>奶茶</li>
<li>牛奶</li>
</OL>
<uL>
<li>咖啡</li>
<li>奶茶</li>
<li>牛奶</li>
</uL>
html
<OL type="A">
<li>咖啡</li>
<li>奶茶</li>
<li>牛奶</li>
</OL>
type就是给序号设置属性
html
<uL type="circle">
<li>咖啡</li>
<li>奶茶</li>
<li>牛奶</li>
</uL>
一般不建议修改
用CSS
1.6 表格标签
html
<table>
<tr>
<th>序号</th>
<th>品牌logo</th>
<th>品牌名称</th>
<th>企业名称</th>
</tr>
<tr></tr>
<tr></tr>
<tr></tr>
</table>
html
<table>
<tr>
<th>序号</th>
<th>品牌logo</th>
<th>品牌名称</th>
<th>企业名称</th>
</tr>
<tr>
<td>010</td>
<td><img src="../img/a.png" width="60" height="50"></td>
<td>三只松鼠</td>
<td>三只松鼠</td>
</tr>
<tr>
<td>009</td>
<td><img src="../img/b.png" width="60" height="50"></td>
<td>优衣库</td>
<td>优衣库</td>
</tr>
<tr>
<td>008</td>
<td><img src="../img/c.png" width="60" height="50"></td>
<td>小米</td>
<td>小米科技有限公司</td>
</tr>
</table>
没有线条
html
<table border="1">
<tr>
<th>序号</th>
<th>品牌logo</th>
<th>品牌名称</th>
<th>企业名称</th>
</tr>
<tr>
<td>010</td>
<td><img src="../img/a.png" width="60" height="50"></td>
<td>三只松鼠</td>
<td>三只松鼠</td>
</tr>
<tr>
<td>009</td>
<td><img src="../img/b.png" width="60" height="50"></td>
<td>优衣库</td>
<td>优衣库</td>
</tr>
<tr>
<td>008</td>
<td><img src="../img/c.png" width="60" height="50"></td>
<td>小米</td>
<td>小米科技有限公司</td>
</tr>
</table>
间距为1像素
两条线合二为一
html
<table border="1" cellspacing="0">
<tr>
<th>序号</th>
<th>品牌logo</th>
<th>品牌名称</th>
<th>企业名称</th>
</tr>
<tr>
<td>010</td>
<td><img src="../img/a.png" width="60" height="50"></td>
<td>三只松鼠</td>
<td>三只松鼠</td>
</tr>
<tr>
<td>009</td>
<td><img src="../img/b.png" width="60" height="50"></td>
<td>优衣库</td>
<td>优衣库</td>
</tr>
<tr>
<td>008</td>
<td><img src="../img/c.png" width="60" height="50"></td>
<td>小米</td>
<td>小米科技有限公司</td>
</tr>
</table>
cellpadding表示间距为0
html
<table border="1" cellspacing="0" width="500">
变宽
html
<table border="1" cellspacing="0" width="500">
<tr align="center">
<th>序号</th>
<th>品牌logo</th>
<th>品牌名称</th>
<th>企业名称</th>
</tr>
<tr align="center">
<td>010</td>
<td><img src="../img/a.png" width="60" height="50"></td>
<td>三只松鼠</td>
<td>三只松鼠</td>
</tr>
<tr align="center">
<td>009</td>
<td><img src="../img/b.png" width="60" height="50"></td>
<td>优衣库</td>
<td>优衣库</td>
</tr>
<tr align="center">
<td>008</td>
<td><img src="../img/c.png" width="60" height="50"></td>
<td>小米</td>
<td>小米科技有限公司</td>
</tr>
</table>
就是居中
html
<br>
<hr>
<br>
<table border="1" cellspacing="0" width="500">
合并单元格分为横向的合并和纵向的合并
比如这样
那怎么算行呢,就是右下角那个合并的,算第三行还是第四行呢,算第三行的,所以第四行只有三个单元格
html
<tr align="center">
<!-- 第一个占两列-->
<th colspan="2">品牌logo</th>
<th>品牌名称</th>
<th>企业名称</th>
</tr>
html
<table border="1" cellspacing="0" width="500">
<tr align="center">
<!-- 第一个占两列-->
<th colspan="2">品牌logo</th>
<th>品牌名称</th>
<th>企业名称</th>
</tr>
<tr align="center">
<td>010</td>
<td><img src="../img/a.png" width="60" height="50"></td>
<td>三只松鼠</td>
<td>三只松鼠</td>
</tr>
<tr align="center">
<td rowspan="2">009</td>
<td><img src="../img/b.png" width="60" height="50"></td>
<td>优衣库</td>
<td>优衣库</td>
</tr>
<tr align="center">
<td>008</td>
<td><img src="../img/c.png" width="60" height="50"></td>
<td>小米</td>
</tr>
</table>
删除第四行一个单元格,第三行第一个单元格占两行
1.7布局标签
结合CSS来用
html
<div>我是div</div>
<div>我是div</div>
<span>我是span</span>
<span>我是span</span>
div换行
一个标签占一行
span不换行,不会占满一行
1.8 表单标签
比如登录的窗口就是表单,采集用户输入的信息,一点按钮就把这些信息发送到服务端
html
<input type="text">
定义一个文本输入框
html
<input type="submit">
定义一个按钮
html
<form>
<input type="text">
<input type="submit">
</form>
我们这里点提交没有用的,因为没有指定form的anction属性
anction属性就是指定表单数据提交的URL,往哪个地方提交数据,就指定action为哪个URL
html
<form action="#">
因为我们没有服务端,所以我们就用#代替,表示把表单数据提交到html页面来,后面我们就可以写服务器的资源路径
表单项数据要想被提交,则必须指定其name属性
html
<input type="text" name="username">
username随便写的
html
<body>
<form action="#">
<input type="text" name="username">
<input type="submit">
</form>
点提交
这样上面就增加了一个键值对,username=hehe#
username是name的属性值,键
hehe是文本输入框里面的值,这就是键值对
method是指定表单提交的方式的1.get是默认值2.post
get请求的参数会拼接在URL后边,http://localhost:63342/java2/html-demo/html/就是URL,就是地址,长度限制为4KB,所以请求参数有限制
post的话,请求参数会在http请求协议的请求体中,请求参数无限制
html
<body>
<form action="#" method="post">
<input type="text" name="username">
<input type="submit">
</form>
重新打开页面
URL后边就没有键值对了
点击开发者工具
点network
在输入一次aaaa
这里多了一次请求
点击就可以查看我们的aaaa
1.9 表单项标签
比如id,用户不用书写,随着表单一起提交,这个就是hidden
html
<form action="#" method="post">
用户名:<input type="text" name="username"><br>
密码:<input type="password" name="password"><br>
<input type="submit" value="免费注册"><br>
<!-- value就是取名字 -->
</form>
提交就会提交到URL地址里
按着F12也可以打开开发者工具
现在我们希望我们点击用户名这三个字就能直接输入,而不是点击文本框
用lable标签就可以
html
<label for="username">用户名:</label>
<input type="text" name="username" id="username"><br>
我们先把用户名:三个字放在lable里面,然后让input和lable有关联,就给input取个id,这个id是唯一标识,for就是去关联这个id
这样我们点击用户名三个字就能选中框框了
html
<form action="#" method="post">
<label for="username">用户名:</label>
<input type="text" name="username" id="username"><br>
<label for="password">密码:</label>
密码:<input type="password" name="password" id="password"><br>
<input type="submit" value="免费注册"><br>
<!-- value就是取名字 -->
</form>
html
性别:
<input type="radio">
html
性别:
<input type="radio" >男
<input type="radio" >女
但是这里男女可以同时选中,所以还不行
,如何让两个单选框达到互斥的效果呢
让name的属性值一样就可以了
html
性别:
<input type="radio" name="gender">男
<input type="radio" name="gender">女
因为gender只能给一个赋值,所以是互斥的
但是我们这里gender却是on的值,为什么呢,选男是on,选女还是on,不选就没有gender
因为男没有关联到
所以还要加个value
html
性别:
<input type="radio" name="gender" value="1">男
<input type="radio" name="gender" value="2">女
这样加个value,提交的就是1,2了,提交的值就是value
在把男和女包括起来,点男这个字就选中男
html
性别:
<input type="radio" name="gender" value="1" id="male"><label for="male">男</label>
<input type="radio" name="gender" value="2" id="female"><label for="female">女</label>
这样就可以了
下面讲一下复选框
html
爱好:
<input type="checkbox" name="hobby" value="1">旅游
<input type="checkbox" name="hobby" value="2">电影
<input type="checkbox" name="hobby" value="3">游戏
hobby就相当于是一个数组了
html
头像:
<input type="file">
图片的数据就会被提交到服务端去
html
<input type="hidden" name="id" value="123">
写了这个没什么反应,但你提交服务端就会有id
html
<input type="submit" value="免费注册">
<input type="reset" value="重置">
<input type="button" value="一个按钮">
button没有任何效果,就是一个按钮,要结合javascipt
点重置的话,你写的就清空了
html
城市:
<select>
<option>北京</option>
<option>上海</option>
<option>广州</option>
</select>
这就是一个下拉列表
要想被提交,就要指定name属性
html
城市:
<select name="city">
<option>北京</option>
<option>上海</option>
<option>广州</option>
</select>
html
<option value="shanghai">上海</option>
如果这样写的话,就只会提交value的值了,没加value的话,就提交option里面的内容
html
个人描述:
<textarea></textarea>
可以写很多行
html
个人描述:
<textarea cols="20" rows="5"></textarea>
这个的意思就是可以写五行,每行20个字
而且还变大了
html
个人描述:
<textarea cols="20" rows="5" name="desc"></textarea>
2.CSS
style标签里面就是CSS的代码
这个的意思选中html里面的就是body里面的所有的div标签里面的文本内容颜色改为红色
html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
div{
color:red;
}
</style>
</head>
<body>
<div>hello css</div>
</body>
</html>
style标签是一种css与html结合的方式
css如何书写
div一部分:选择器
里面的键值对一部分:属性
2.1 CSS导入方式
内联样式:在html标签里面定义style属性,通过style属性指定CSS代码
html与css耦合在一起,就不利于维护
内部样式:在html页面里面定义style标签
style标签内部,定css代码
外部样式:现在外部定义css文件,在里面写css代码,在html页面里面使用link标签来引入css的外部文件
html
<body>
<div style="">hello css</div>
</body>
在style属性里面写css代码:就是属性键值对
html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div style="color:red">hello css</div>
</body>
</html>
html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
</style>
</head>
<body>
<div style="color:red">hello css</div>
<span>hello css</span>
</body>
</html>
span里面写文本内容
style来控制里面的文本内容,里面写css代码
span标签的话,我们要写个选择器,就是span,意思就是选择body里面所有的span标签
html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
span{
color:red;
}
</style>
</head>
<body>
<div style="color:red">hello css</div>
<span>hello css</span>
</body>
</html>
为了演示第二种方式,这里我们创建一个文件夹css1,里面放着demo.css
文件
html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
span{
color:red;
}
</style>
</head>
<body>
<div style="color:red">hello css</div>
<span>hello css</span>
<p>heloo css</p>
</body>
</html>
加个p标签
要控制p标签,所以选择器就写p
html
p{
color:red;
}
我们在html里面使用link来引入
html
<link href="">
href来引入css文件
html
<link href="../css1/demo.css" rel="stylesheet">
stylesheet的意思就是,link以后会引入很多文件的,stylesheet就是说我这个文件就是css属性的,才能特定解析
html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
span{
color:red;
}
</style>
<link href="../css1/demo.css" rel="stylesheet">
</head>
<body>
<div style="color:red">hello css</div>
<span>hello css</span>
<p>heloo css</p>
</body>
</html>
2.2 CSS选择器
html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
div{
color:red;
}
</style>
</head>
<body>
<div>div1</div>
<div>div2</div>
<div>div3</div>
<span>span</span>
</body>
</html>
这个就是元素选择器
html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
div{
color:red;
}
#name{
color:blue;
}
</style>
</head>
<body>
<div id="name">div1</div>
<div>div2</div>
<div>div3</div>
<span>span</span>
</body>
</html>
这个就是id选择器
这个的选择器是以name为准的,name优先
id选择器唯一,意思是id是唯一的
但是类选择器不是唯一的
html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
div{
color:red;
}
#name{
color:blue;
}
.cls{
color:pink;
}
</style>
</head>
<body>
<div id="name">div1</div>
<div>div2</div>
<div class="cls">div3</div>
<span class="cls">span</span>
</body>
</html>
2.3 CSS属性
点击HTML/CSS,选择CSS3,再点击参考书就可以找到css属性了
3. JavaScript
3.1 引入方式
html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script>
alert("hello js")
</script>
</head>
<body>
</body>
</html>
alert("hello js")弹出一个警告框
确定就没了
html
<script>
alert("hello js")
</script>
可以随便放,数量没限制
html
<script>
alert("hello js1")
</script>
<script>
alert("hello js2")
</script>
<script>
alert("hello js3")
</script>
这样就要点三个确定
一般放在body里面的偏后面
html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script>
alert("hello js1")
</script>
<script>
alert("hello js2")
</script>
<script>
alert("hello js3")
</script>
</body>
</html>
html
<script src="../js/demo.js"></script>
因为标签里面没有内容,所以可以自闭和
但是不能,因为这样就不能生效了
3.2 基础语法
结尾分号可以不写
window.可以省略
html
<script>
window.alert("hello js");
document.write("hello js2");//写入html页面
</script>
html
window.alert("hello js");
document.write("hello js2");//写入html页面
console.log("hello js3");//写入浏览器控制台
浏览器控制台在开发者工具
f12
html
<script>
var test=20;
alert(test);
</script>
javascript
<script>
var test=20;
test="张三";
alert(test);
</script>
var定义的变量是全局的
javascript
{
var age =30;
}
alert(age);
变量可以重复定义
javascript
{
var age =30;
var age =20;
}
alert(age);
let关键字
javascript
{
let age =30;
<!-- var age =20;-->
}
alert(age);
报错会在控制台里面提示
点链接就会有对应提示
let的作用域就在大括号,而且不能重复定义
const是用来定义常量的
javascript
<script>
var age=20;
var price=99.8;
alert(typeof age);
alert(typeof price);
</script>
javascript
<script>
var age='q';
var price='hahah';//单引号与双引号都是一样的
alert(typeof age);
alert(typeof price);
</script>
javascript
var age=true;
var price=false;
alert(typeof age);
alert(typeof price);
javascript
<script>
var age=null;
var price=false;
alert(typeof age);
alert(typeof price);
</script>
null弹出一个object,所以引用类型和null弹出都是object
javascript
<script>
var age;
var price=false;
alert(typeof age);
alert(typeof price);
</script>
javascript
/// == 与 ===全等于
var age1=20;
var age2="20";
alert(age1==age2);
这些大于等于,等于等于,比较的时候都会进行类型转换,所以相等
先判断类型一不一样,不一样的话,就类型转换
全等于就不会类型转换,类型不一样直接false
javascript
<script>
/// == 与 ===全等于
var age1=20;
var age2="20";
alert(age1===age2);
</script>
类型转换:,其他类型转换为number,
string:按照字符串的字面值转换为数字
var str='20'
字面值就是20
var str='abc'
转不了数字
不会报错,但是会转成一个特殊的数字NaN
这就是一个不是数字的数字
javascript
var str=+"abc";
这里我们在前面加上一个+,因为+后面要接上数字,所以会自动强转
javascript
var str=+"abc";
alert(str);
javascript
var str=+"20";
alert(str+1);
如果是字符串就是201
可以用parseInt,把字符串转换成数字
javascript
var str="20";
alert(parseInt(str)+1);
第二就是boolean转成数字,true为1,false为0
javascript
var flag=+true;
alert(flag);
其他类型转换为boolean
number:0和NaN为false,其余为false
javascript
var flag=0;
if(flag){
alert("转为true");
}else{
alert("转为false");
}
条件里面需要boolean,所以会自动转换
字符串:空字符串转false,就是一个引号,有内容为true
javascript
var flag="";
if(flag){
alert("转为true");
}else{
alert("转为false");
}
undefined,null为fasle
javascript
var flag=null;
if(flag){
alert("转为true");
}else{
alert("转为false");
}
javascript
var flag=undefined;
if(flag){
alert("转为true");
}else{
alert("转为false");
}
作用就是原来要这样判断
javascript
var str="";
if(str!=null&&str.length>0){
alert("转为true");
}else{
alert("转为false");
}
现在只需要
javascript
var str="";
if(str){
alert("转为true");
}else{
alert("转为false");
}
javascript
var count = 3;
if(count==3){
alert(count);
}
然后switch,case也是一样的
javascript
switch(count){
case 3:
alert("星期三");
break;
}
javascript
for(let i=0;i<=100;i++)
{
}
反正这些控制语句与原来的Java没什么区别
javascript
function add(a,b){
return a+b;
}
var result =add(1,2);
alert(result);
javascript
var add=function(a,b){
return a+b;
}
var result =add(1,2);
alert(result);
javascript
var add=function(a,b){
return a+b;
}
var result =add(1,2,3);
alert(result);
弹出来还是三,因为参数对应传,3没有传
javascript
var add=function(a,b){
return a+b;
}
var result =add(1);
alert(result);
因为b没有值,所以b就是NaN,所以和也是NaN
3.3 常用对象
javascript
var arr=new Array(1,2,3);
alert(arr);
javascript
var arr=[1,2,3];
alert(arr);
javascript
//访问
arr[1]=111;
alert(arr[1])
这里的数组相当于Java里面的集合,可以变长
javascript
var arr2=[1,2,3];
arr2[10]=100;
alert(arr2[10]);
javascript
var arr2=[1,2,3];
arr2[10]=100;
alert(arr2[10]);
alert(arr2[9]);
没赋值就是这样,打印出来就是空字符串
javascript
arr2[5]="hello";
alert(arr2[5]);
而且类型可变
javascript
//lenth就是数组元素个数
var arr4=[1,2,3];
for(let i=0;i<arr4.length;i++)
{
alert(arr4[i]);
}
javascript
//push就是把元素添加到数组里面去
//splice:删除方法
var arr5=[1,2,3];
arr5.push(10);
alert(arr5);
javascript
//push就是把元素添加到数组里面去
//splice:删除方法
var arr5=[1,2,3];
arr5.push(10);
arr5.splice(0,1);
alert(arr5);
splice的意思就是从0开始删,删一个元素
javascript
var str1=new String("hello");
var str2=("hello");
var str3=('hello');
alert(str1);
alert(str2.length);
javascript
//trim():去除字符串前后两端的空白字符
var str4=(' hello ');
alert(1+str4+1)
javascript
//trim():去除字符串前后两端的空白字符
var str4=(' hello ');
alert(1+str4.trim(str4)+1)
因为输入密码的时候,可能后面多输了几个空格
javascript
var person={
name : " zhangan",
age :23,
eat:function(){
alert("干饭");
}
};
alert(person.name);
alert(person.age);
person.eat();
3.4 BOM
confirm就是你点删除的时候,弹出一个框让你是否要删除,防止用户误操作
后面两个方法是定时器
比如广告过一会而儿就换一张图片,这个就是定时器的作用
第一个循环执行,第二个是只执行一次
javascript
//window.可以省略
confirm("确认删除?");
确认就删除,取消就什么都不干
因为要对应干不同的事,所以这个方法有返回值的
javascript
//window.可以省略
var flag=confirm("确认删除?");
alert(flag);
点确定就返回true,取消返回false
javascript
if(flag){
//删除
}
javascript
//定时器
//setTimeout(function,毫秒值):在一定的时间间隔后去执行一个function,只执行一次
//setInterval(function,毫秒值):在一定的时间间隔后去执行一个function,循环执行
setTimeout(function(){
alert("hehe");
},3000)
三秒后弹hehe
javascript
setInterval(function(){
alert("hehe");
},1000)
过一秒就弹一次
javascript
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<input type="button" onclick="on()" value="开灯">
<img src="../img/off.png" id="myImage" border="0" style="...">
<input type="button" onclick="off()" value="关灯">
<script>
function on(){
document.getElementById('myImage').src='../img/on.png';
}
function off(){
document.getElementById('myImage').src='../img/off.png';
}
//定时器
//setInterval(function (){},1000)
</script>
</body>
</html>
这个的效果就是你点开灯就开灯
javascript
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<input type="button" onclick="on()" value="开灯">
<img src="../img/off.png" id="myImage" border="0" style="...">
<input type="button" onclick="off()" value="关灯">
<script>
function on(){
document.getElementById('myImage').src='../img/on.png';
}
function off(){
document.getElementById('myImage').src='../img/off.png';
}
var x=0;
//定时器
setInterval(function (){
if(x%2==0){
on();
}else{
off();
}
x++;
},1000)
</script>
</body>
</html>
这样就可以一秒闪一次了
如果是三个方法的话的循环调用,就%3
就是这里的前后箭头
获取或者设置URL
javascript
<script>
alert("aaaa");
location.href="https://www.baidu.com";
</script>
执行确定就会直接跳转到百度
javascript
document.write("三秒跳转到百度...");
setTimeout(function(){
location.href="https://www.baidu.com";
},3000);
3.5 DOM
比如你点击按钮,里面的内容就随着改变
因为id唯一,标签不唯一
不唯一就返回数组
javascript
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<img id="Light" src="../img/a.png" ><br>
<div class="cls">处置</div><br>
<div class="cls">aaa</div><br>
<input type="checkbox" name="hobby">电影
<input type="checkbox" name="hobby">旅游
<input type="checkbox" name="hobby">游戏
<br>
<script>
</script>
</body>
</html>
javascript
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<img id="light" src="../img/a.png" ><br>
<div class="cls">处置</div><br>
<div class="cls">aaa</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就是<img id="Light" src="../img/a.png" >了
alert(img);
</script>
</body>
</html>
这里就显示了一个object对象,而且类型都出来了
javascript
//根据标签名称获取
var divs=document.getElementsByTagName("div");
alert(divs.length);
javascript
for(let i=0;i<divs.length;i++)
{
alert(divs[i]);
}
javascript
//根据name获取
var hobbys=document.getElementsByName("hobby");
alert(hobbys.length);
for(let i=0;i<hobbys.length;i++)
{
alert(hobbys[i]);
}
javascript
//根据class属性获取
var clss=document.getElementsByClassName("cls");
alert(clss.length);
for(let i=0;i<clss.length;i++)
{
alert(clss[i]);
}
根据文档查看来使用对象的方法
总共有三种标签,img,input,div
看这个,我们利用src方法更换图片
javascript
var img =document.getElementById("light");
img.src="../img/on.png";
javascript
var divs=document.getElementsByTagName("div");//期望把文字黑色换成红色
然后就是查文档
但这个里面没有方法
但他可以用Element对象的方法
因为继承 嘛
javascript
var divs=document.getElementsByTagName("div");//期望把文字黑色换成红色
//style设置css样式
//innerHTML设置元素内容
for(let i=0;i<divs.length;i++){
divs[i].style.color='red';
}
javascript
var divs=document.getElementsByTagName("div");//期望把文字黑色换成红色
//style设置css样式
//innerHTML 设置元素内容
for(let i=0;i<divs.length;i++){
<!-- divs[i].style.color='red';-->
divs[i].innerHTML='hehheeheheh';
}
这两个属性是通用的属性
每个html页面都有
true就是选中
javascript
//根据name获取
var hobbys=document.getElementsByName("hobby");
alert(hobbys.length);
for(let i=0;i<hobbys.length;i++)
{
//alert(hobbys[i]);
hobbys[i].checked=true;//就代表选中的状态
}
这就默认选中了
3.6 事件监听
button是一个按钮,onclick是一个事件属性,设置一个方法,点击这个按钮,就调用这个方法,推荐使用第二种方式
javascript
<!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="再点我"><br>
<script>
function on(){
alert("我被点亮");
}
</script>
</body>
</html>
javascript
<!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>
<script>
function on(){
alert("我被点亮");
}
document.getElementById("btn").onclick=function(){
alert("我被点了")
}
</script>
</body>
</html>
常见事件
移到文本输入框点击就有光标,移到外面就没有光标了,而且里面的内容会变成大写
就是你点一下就会发生一些情况
就是你点击外面会发生一些事情
javascript
<input type="text" name="username"/>
<input type="submit" name="提交"/>
username=输入内容
javascript
<form id="register" action="#">
<input type="text" name="username"/>
<input type="submit" name="提交"/>
</form>
<script>
document.getElementById("register").onsubmit=function(){
return false;//表单就不会提交
}//给表单绑定一个onsubmit事件
</script>
看嘛,点了提交URL还是不变的
return true就会提交
3.10 表单验证
有红就不能提交,无红提交就发往服务端
失去焦点onblur
javascript
<div class="form-div">
<div class="reg-content">
<h1>欢迎注册</h1>
<span>已有帐号?</span><a href="#">登录</a>
</div>
<!-- //提交方式是get,提交到当前页面#,三个input输入-->
<form id="reg-form" action="#" method="get">
<table>
<tr>
<td>用户名</td>
<td class="inputs" >
<input name="username" type="text" id="username">
<br>
<!-- span包裹的就是错误提示信息-->
<span id="username_err" class="err_msg" style="display:none">用户名不太受欢迎</span>
</td>
</tr>
<tr>
<td>密码</td>
<td class="inputs" >
<input name="password" type="text" id="password">
<br>
<span id="password_err" class="err_msg" style="display:none">密码格式有误</span>
</td>
</tr>
<tr>
<td>手机号</td>
<td class="inputs" >
<input name="tel" type="text" id="tel">
<br>
<span id="tel_err" class="err_msg" style="display:none">手机号格式有误</span>
</td>
</tr>
</table>
</form>
</div>
我们这样输入没有提示信息
我们把display:none中的display的none信息去掉就有提示信息了,但是会一直存在的
javascript
<span name="username_err" class="err_msg" style="display:">用户名不太受欢迎</span>
判断输入内容是否符合要求,如果不符合要求,修改css样式的display的属性值设置为空就可以了,提示信息就出来了
javascript
<script>
//1.验证用户名是否符合规则
//1.1获取用户名的输入框
var usernameInput=document.getElementById("username");
//1.2绑定onblur事件 失去焦点
usernameInput.onblur=function(){//1.3获取用户名
var username=usernameInput.value.trim();//排除空格
//usernameInput.value;可以获取输入框的填写内容
//判断用户名是否符合规则:长度6~12
if(username.length>=6&&username.length<=12){
//符合规则
}else{
//不符合规则 获取span
document.getElementById("username_err").style.display='';
}
};
</script>
但是现在我们填对了,也不会取消那个东西了
所以还要修改
javascript
//1.验证用户名是否符合规则
//1.1获取用户名的输入框
var usernameInput=document.getElementById("username");
//1.2绑定onblur事件 失去焦点
usernameInput.onblur=function(){//1.3获取用户名
var username=usernameInput.value.trim();//排除空格
//usernameInput.value;可以获取输入框的填写内容
//判断用户名是否符合规则:长度6~12
if(username.length>=6&&username.length<=12){
//符合规则
document.getElementById("username_err").style.display='none';
}else{
//不符合规则 获取span
document.getElementById("username_err").style.display='';
}
};
这样就可以了
密码和用户名就没有什么区别了
ctrl+r全部选中,进行替换
再点全部替换
javascript
//1.验证密码是否符合规则
//1.1获取密码的输入框
var passwordInput=document.getElementById("password");
//1.2绑定onblur事件 失去焦点
passwordInput.onblur=function(){//1.3获取密码
var password=passwordInput.value.trim();//排除空格
//passwordInput.value;可以获取输入框的填写内容
//判断密码是否符合规则:长度6~12
if(password.length>=6&&password.length<=12){
//符合规则
document.getElementById("password_err").style.display='none';
}else{
//不符合规则 获取span
document.getElementById("password_err").style.display='';
}
};
再改一下length
javascript
//1.验证手机号是否符合规则
//1.1获取手机号的输入框
var telInput=document.getElementById("tel");
//1.2绑定onblur事件 失去焦点
telInput.onblur=function(){//1.3获取手机号
var tel=telInput.value.trim();//排除空格
//telInput.value;可以获取输入框的填写内容
//判断手机号是否符合规则:长度11
if(tel.length==11){
//符合规则
document.getElementById("tel_err").style.display='none';
}else{
//不符合规则 获取span
document.getElementById("tel_err").style.display='';
}
};
下面我们来完成第二个需求,就是不满足就无法提交
javascript
//获取表单对象
var regForm=document.getElementById("reg-form");
//绑定一个onsubmit
reForm.onsubmit=function(){
//挨个判断每一个表单项是否符合要求,一个不符合都不提交
//判断每个表单项的话,利用方法就可以了
}
判断每个表单项的话,利用方法就可以了,所以方法得有返回值才行
,而且还要额外取个名
javascript
//1.验证用户名是否符合规则
//1.1获取用户名的输入框
var usernameInput=document.getElementById("username");
//1.2绑定onblur事件 失去焦点
usernameInput.onblur=checkUsername;
function checkUsername(){//1.3获取用户名
var username=usernameInput.value.trim();//排除空格
//usernameInput.value;可以获取输入框的填写内容
//判断用户名是否符合规则:长度6~12
var flag=username.length>=6&&username.length<=12
if(flag){
//符合规则
document.getElementById("username_err").style.display='none';
}else{
//不符合规则 获取span
document.getElementById("username_err").style.display='';
}
return flag;
};
javascript
//获取表单对象
var regForm=document.getElementById("reg-form");
//绑定一个onsubmit
regForm.onsubmit=function(){
//挨个判断每一个表单项是否符合要求,一个不符合都不提交
//判断每个表单项的话,利用方法就可以了
var flag=checkUsername() && checkPassword() && checkTel();
return flag;
}
true才会提交
javascript
<div class="buttons">
<input value="注 册" type="submit" id="reg_btn" >
</div>
这个是我们的提交按钮
这样就无法提交了
3.11 正则表达式
javascript
<script>
//规则:单词字符,6~12
var reg=/^\w{6,12}$/;
var str="abc";
var flag=reg.test(str);
alert(flag);
</script>
上一个表单验证就可以这样改了
javascript
var reg=/^\w{6,12}$/;
var flag=reg.test(username);
javascript
var reg=/^\w{6,12}$/;
var flag=reg.test(password);
javascript
//判断手机号是否符合规则:长度11,数字组成,1开头
var reg=/^[1]\d{10}$/;
var flag=reg.test(tel);
全部代码如下
javascript
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div class="form-div">
<div class="reg-content">
<h1>欢迎注册</h1>
<span>已有帐号?</span><a href="#">登录</a>
</div>
<!-- //提交方式是get,提交到当前页面#,三个input输入-->
<form id="reg-form" action="#" method="get">
<table>
<tr>
<td>用户名</td>
<td class="inputs" >
<input name="username" type="text" id="username">
<br>
<!-- span包裹的就是错误提示信息-->
<span id="username_err" class="err_msg" style="display:none">用户名不太受欢迎</span>
</td>
</tr>
<tr>
<td>密码</td>
<td class="inputs" >
<input name="password" type="text" id="password">
<br>
<span id="password_err" class="err_msg" style="display:none">密码格式有误</span>
</td>
</tr>
<tr>
<td>手机号</td>
<td class="inputs" >
<input name="tel" type="text" id="tel">
<br>
<span id="tel_err" class="err_msg" style="display:none">手机号格式有误</span>
</td>
</tr>
</table>
<div class="buttons">
<input value="注 册" type="submit" id="reg_btn" >
</div>
</form>
</div>
<script>
//1.验证用户名是否符合规则
//1.1获取用户名的输入框
var usernameInput=document.getElementById("username");
//1.2绑定onblur事件 失去焦点
usernameInput.onblur=checkUsername;
function checkUsername(){//1.3获取用户名
var username=usernameInput.value.trim();//排除空格
//usernameInput.value;可以获取输入框的填写内容
//判断用户名是否符合规则:长度6~12,单词字符组成
var reg=/^\w{6,12}$/;
var flag=reg.test(username);
if(flag){
//符合规则
document.getElementById("username_err").style.display='none';
}else{
//不符合规则 获取span
document.getElementById("username_err").style.display='';
}
return flag;
};
//1.验证密码是否符合规则
//1.1获取密码的输入框
var passwordInput=document.getElementById("password");
//1.2绑定onblur事件 失去焦点
passwordInput.onblur=checkPassword;
function checkPassword(){//1.3获取密码
var password=passwordInput.value.trim();//排除空格
//passwordInput.value;可以获取输入框的填写内容
//判断密码是否符合规则:长度6~12
var reg=/^\w{6,12}$/;
var flag=reg.test(password);
if(flag){
//符合规则
document.getElementById("password_err").style.display='none';
}else{
//不符合规则 获取span
document.getElementById("password_err").style.display='';
}
return flag;
};
//1.验证手机号是否符合规则
//1.1获取手机号的输入框
var telInput=document.getElementById("tel");
//1.2绑定onblur事件 失去焦点
telInput.onblur=checkTel;
function checkTel(){//1.3获取手机号
var tel=telInput.value.trim();//排除空格
//telInput.value;可以获取输入框的填写内容
//判断手机号是否符合规则:长度11,数字组成,1开头
var reg=/^[1]\d{10}$/;
var flag=reg.test(tel);
if(flag){
//符合规则
document.getElementById("tel_err").style.display='none';
}else{
//不符合规则 获取span
document.getElementById("tel_err").style.display='';
}
return flag;
};
//获取表单对象
var regForm=document.getElementById("reg-form");
//绑定一个onsubmit
regForm.onsubmit=function(){
//挨个判断每一个表单项是否符合要求,一个不符合都不提交
//判断每个表单项的话,利用方法就可以了
var flag=checkUsername() && checkPassword() && checkTel();
return flag;
}
</script>
</body>
</html>
总结
过两天上传加上gitee链接,不然代码太多了