Javascript(网站的行为)
1. javascript是一门编程语言
- DOM和BOM是javascript的内置模块
- jqurey相当于编程语言的第三方模块
2.javascript
javascript的意义是什么呢:就是让你的网页动起来,让网页含有动态效果
初步的了解
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>javascript</title>
<link rel="stylesheet" href="bootstrap/bootstrap-3.4.1-dist/css/bootstrap.css">
<style>
.menus{
width: 200px;
border: 1px solid red;
}
.menus .header{
background-color: gold;
padding: 20px 10px;
}
</style>
</head>
<body>
<div class="menus">
<div class="header" onclick="myFunc()">标题</div>
<div class="item">内容</div>
</div>
<script src="bootstrap/bootstrap-3.4.1-dist/js/jquery-3.6.0.min.js"></script>
<script src="bootstrap/bootstrap-3.4.1-dist/js/bootstrap.min.js"></script>
<script type="text/javascript">
function myFunc(){
// alert("你好呀");
confirm("是否要继续?")
}
</script>
</body>
</html>
3.JavaScript作用区域
- 直接写在html中
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>javascript</title>
<link rel="stylesheet" href="bootstrap/bootstrap-3.4.1-dist/css/bootstrap.css">
<style>
.menus{
width: 200px;
border: 1px solid red;
}
.menus .header{
background-color: gold;
padding: 20px 10px;
}
</style>
<script type="text/javascript">
//编写javascript的代码(位置1)不推荐影响效率
</script>
</head>
<body>
<div class="menus">
<div class="header">标题</div>
<div class="item">内容</div>
</div>
<script src="bootstrap/bootstrap-3.4.1-dist/js/jquery-3.6.0.min.js"></script>
<script src="bootstrap/bootstrap-3.4.1-dist/js/bootstrap.min.js"></script>
<script type="text/javascript">
//编写javascript代码(位置2)推荐
</script>
</body>
</html>
- 写一个js文件然后导入
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>javascript</title>
<link rel="stylesheet" href="bootstrap/bootstrap-3.4.1-dist/css/bootstrap.css">
<style>
.menus{
width: 200px;
border: 1px solid red;
}
.menus .header{
background-color: gold;
padding: 20px 10px;
}
</style>
</head>
<body>
<div class="menus">
<div class="header" onclick="myFunc()">标题</div>
<div class="item">内容</div>
</div>
<script src="bootstrap/bootstrap-3.4.1-dist/js/jquery-3.6.0.min.js"></script>
<script src="bootstrap/bootstrap-3.4.1-dist/js/bootstrap.min.js"></script>
<script src="存在形式.js"></script>
</body>
</html>
4.javascript的注释
- html的注释
<!--注释内容-->
- css的注释
/* 注释内容 */
- JavaScript的注释
//注释内容
/* 注释内容*/
5.javascript基础
5.1 变量
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>javascript</title>
</head>
<body>
<script type="text/javascript">
var name = "love"; //定义一个字符串
console.log(name); //输出,要在f12里查看
</script>
</body>
</html>
5.1.1 字符串类型
//声明
var name = "love";
var name = String("love");
//常见功能
var name = "love"
var v1 = name.length;
//按索引取值
var v2 = name[0]
var v22 = name.charAt(0)
//去空格
var v3 = name.trim()
//切片(前取后不取)
var v4 = name.substring(0, 2)
案例:跑马灯
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>javascript</title>
</head>
<span id="txt">中国联通</span>
<body>
<script type="text/javascript">
function show() {
//去html中的标签获得内容(DOM)
//获取标签对象
var tag = document.getElementById("txt");
//从对象中获取字符串
var dataString = tag.innerText;
//动态起来,把第一个字母放到最后面
var firstChar = dataString[0];
var otherString = dataString.substring(1, dataString.length);
var newText = otherString + firstChar;
//在html中更新我们的内容
tag.innerText = newText;
}
//BOM中的一个定时器,每一秒执行一次show函数
setInterval(show, 1000);
</script>
</body>
</html>
5.2 数组
//定义
var v1 = [11,22,33,44];
var v2 = Array[11,22,33,44];
//常见操作
<script type="text/javascript">
var v1 = [11, 22, 33, 44];
//按索引取值
var v2 = v1[1];
//按索引修改
v1[0] = "love";
//添加和删除
v1.push(99); //在尾部添加
v1.unshift(88); //在头部添加
v1.splice(1, 0, 77) //在特定位置添加(索引,0,要添加的元素)
v1.pop() //在尾部删除
v1.shift() //在头部删除
v1.splice(2, 1) //索引为2的元素删除(索引,1)
//循环
var v3 = [11, 22, 33, 44]
for (var item in v3) {
//item为索引
//拿数据
var data = v3[item]
}
//循环方法2
var v4 = [11, 22, 33, 44]
for (var i = 0; i < v4.length; i++) {
var data2 = v4[i]
}
</script>
案例 动态数据
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>javascript</title>
</head>
<body>
<ul id="city"></ul>
<script type="text/javascript">
var cityList = ["北京", "上海", "深圳", "成都"];
for (var idx in cityList) {
var text = cityList[idx];
//创建一个li标签(DOM)
var tag = document.createElement("li");
//在li标签中写入内容
tag.innerText = text
//添加到id为city的ul标签中(DOM)
var parentTag = document.getElementById("city");
parentTag.appendChild(tag);
}
</script>
</body>
</html>
5.3 对象
info={
"name":"love",
"age":18.
}
info={
name="love",
age=18
}
<script type="text/javascript">
info = {
name: "love",
age: 18,
}
//根据对象的key来取值和修改值
var userName = info.name
info.age = 19
//第二种写法
var userName2 = info["name"]
info["age"] = 20
//删除对象的值
delete info["age"]
//对对象循环
for (var key in info) {
var data = info[key]
}
</script>
案例:动态表格
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>javascript</title>
</head>
<body>
<table border="1">
<thead>
<tr>
<th>id</th>
<th>姓名</th>
<th>年龄</th>
</tr>
</thead>
<tbody id="body">
</tbody>
</table>
<script type="text/javascript">
var dataList = [
{id: 1, name: "love", age: 18},
{id: 2, name: "love", age: 18},
{id: 3, name: "love", age: 18},
{id: 4, name: "love", age: 18},
{id: 5, name: "love", age: 18},
{id: 6, name: "love", age: 18},
];
for (var idx in dataList) {
var info = dataList[idx];
var tr = document.createElement("tr");
for (var key in info) {
var text = info[key];
var td = document.createElement("td");
td.innerText = text;
tr.appendChild(td);
}
var bodyTag = document.getElementById("body");
bodyTag.appendChild(tr)
}
</script>
</body>
</html>
5.3 条件语句
if(条件){
}else{
}
if(条件){
}else if(条件){
}else if(条件){
}else{
}
5.4 函数
funtion func(){
.....
}
func()
6. DOM
DOM是一个模块,可以结和javascript对html的标签进行操作
<div id="dom">欢迎使用javascript的</div>
<script type="text/javascript">
//创建标签
var div = document.createElement("div");
//根据id获取标签
var tag = document.getElementById("dom");
//获取标签中的文本
tag.innerText;
//设置标签中的文本
div.innerText = "DOM";
//添加标签在html中
tag.appendChild(div);
</script>
6.1 事件的绑定
案例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>javascript</title>
</head>
<body>
<input type="button" value="点击添加" onclick="addCityInfo()"/>
<ul id="city">
</ul>
<script>
function addCityInfo() {
var newTag = document.createElement("li");
newTag.innerText = "中国";
var tag = document.getElementById("city");
tag.appendChild(newTag);
}
</script>
</body>
</html>
进阶案例输入添加
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>javascript</title>
</head>
<body>
<input type="text" placeholder="请输入内容:" id="userTxt"/>
<input type="button" value="点击添加" onclick="addCityInfo()"/>
<ul id="city">
</ul>
<script>
function addCityInfo() {
var txtTag = document.getElementById('userTxt');
var newString = txtTag.value;
if (newString.length > 0) {
var newTag = document.createElement("li");
newTag.innerText = newString;
var tag = document.getElementById('city');
tag.appendChild(newTag);
txtTag.value = '';
}else {
alert("输入不能为空") //BOM
}
}
</script>
</body>
</html>
6.2 注意
DOM还有很多功能
DOM可以实现很多功能,但是比较繁琐
我们后期会用一个类库jqurey来实现
或者后期会用VUE.js/react.js来实现
7. jqurey
jqurey是JavaScript的一个第三方模块
- 基于jqurey,自己开发一个功能
- 现成的工具依赖jqurey eg:bootstrap动态效果
7.1 快速上手
7.1.1 下载jquery
https://jquery.com/
7.1.2 应用jquery
<script src="bootstrap/bootstrap-3.4.1-dist/js/jquery-3.6.0.min.js"></script>
7.2 初识jquery
<script src="bootstrap/bootstrap-3.4.1-dist/js/jquery-3.6.0.min.js"></script>
<script type="text/javascript">
//利用jquery的功能实现我们的效果
$('#txt').text("四川联通");
//利用DOM
document.getElementById('txt').innerText="四川联通";
</script>
两种方法对比实现同一个功能jQuery会比DOM简单
7.3 寻找标签(直接寻找)
- id选择器
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>jquery</title>
</head>
<h1 id="txt">中国联通</h1>
<body>
<script src="bootstrap/bootstrap-3.4.1-dist/js/jquery-3.6.0.min.js"></script>
<script type="text/javascript">
$('txt')
</script>
</body>
</html>
通过id寻找标签
- 样式选择器
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>jquery</title>
</head>
<h1 class="c1">中国联通</h1>
<body>
<script src="bootstrap/bootstrap-3.4.1-dist/js/jquery-3.6.0.min.js"></script>
<script type="text/javascript">
$('.c1')
</script>
</body>
</html>
通过类选择
- 标签选择器
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>jquery</title>
</head>
<h1 class="c1">中国联通</h1>
<div></div>
<body>
<script src="bootstrap/bootstrap-3.4.1-dist/js/jquery-3.6.0.min.js"></script>
<script type="text/javascript">
$('div')
</script>
</body>
</html>
通过标签找到标签
- 层级选择器
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>jquery</title>
</head>
<div class="c1">
<div class="c2">
<a></a>
</div>
</div>
<body>
<script src="bootstrap/bootstrap-3.4.1-dist/js/jquery-3.6.0.min.js"></script>
<script type="text/javascript">
$('.c1 .c2 a')
</script>
</body>
</html>
- 多选择器
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>jquery</title>
</head>
<div class="c1">
<div class="c2">
<a></a>
</div>
</div>
<div class="c3">
</div>
<body>
<script src="bootstrap/bootstrap-3.4.1-dist/js/jquery-3.6.0.min.js"></script>
<script type="text/javascript">
$('.c1,.c3')
</script>
</body>
</html>
用逗号隔开
7.4 间接寻找
- 找到上一个兄弟
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>jquery</title>
</head>
<body>
<div>
<div>北京</div>
<div id="c1">上海</div>
<div>成都</div>
<div>深圳</div>
</div>
<script src="bootstrap/bootstrap-3.4.1-dist/js/jquery-3.6.0.min.js"></script>
<script type="text/javascript">
$('#c1').prev(); //找到上一个---北京
$('#c1');
$('#c1').next(); //找到下一个---成都
$("#c1").next().next() //下一个的下一个----深圳
$("#c1").siblings() //所有的兄弟
</script>
</body>
</html>
- 找父子
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>jquery</title>
</head>
<body>
<div id="c1">
<div id="c2">
<div>北京</div>
<div id="c3">上海</div>
<div>成都</div>
<div>深圳</div>
</div>
</div>
<script src="bootstrap/bootstrap-3.4.1-dist/js/jquery-3.6.0.min.js"></script>
<script type="text/javascript">
$('#c3').parent(); //父亲id=c2的div
$("#c3").parent().parent(); //父亲的父亲id=c1的div
$('#c1').children() //获取所有的孩子
$("#c1").children("#c2") //获取id=c2的孩子
$("#c1").find("#c3") //找到id=c3的子孙
</script>
</body>
</html>
7.5 案例:菜单切换
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>jquery</title>
<style>
.menus {
width: 200px;
height: 800px;
border: 1px solid red;
text-align: center;
}
.menus .item .header {
background-color: gold;
padding: 10px 5px;
cursor: pointer;
}
.menus .item .content a {
display: block;
padding: 10px 5px;
border-bottom: 2px dotted greenyellow;
}
.hide {
display: none;
}
</style>
</head>
<div class="menus">
<div class="item">
<div class="header" onclick="clickMe(this)">上海</div>
<div class="content hide">
<a>宝山区</a>
<a>青浦区</a>
<a>浦东新区</a>
</div>
<div class="item">
<div class="header" onclick="clickMe(this)">北京</div>
<div class="content hide">
<a>海淀区</a>
<a>昌平区</a>
<a>大兴区</a>
</div>
</div>
</div>
</div>
<script src="bootstrap/bootstrap-3.4.1-dist/js/jquery-3.6.0.min.js"></script>
<script type="text/javascript">
function clickMe(self) {
//获取onclick下一个标签的hide属性
var hasClass = $(self).next().hasClass("hide")
//判断属性是否存在
//如果存在移除
if(hasClass){
$(self).next().removeClass("hide")
}
//不存在就加入hide属性
else {
$(self).next().addClass("hide")
}
}
</script>
</body>
</html>
7.5 值的操作
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>jquery</title>
<style>
</style>
</head>
<body>
<div id="c1">内容</div>
<input type="text" id="c2">
<script src="bootstrap/bootstrap-3.4.1-dist/js/jquery-3.6.0.min.js"></script>
<script type="text/javascript">
$("#c1").text(); //获取文本内容
$("#c1").text("内容"); //设置文本内容
$("#c2").val(); //获取用户输入的内容
$("#c2").val("内容") //设置内容
</script>
</body>
</html>
7.5.1 案例:动态创建数据
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>jquery</title>
<style>
</style>
</head>
<body>
<input type="text" id="textUser" placeholder="用户名"/>
<input type="text" id=textEmail placeholder="邮箱"/>
<input type="button" value="提交" onclick="getInfo()">
<ul id="view">
</ul>
<script src="bootstrap/bootstrap-3.4.1-dist/js/jquery-3.6.0.min.js"></script>
<script type="text/javascript">
function getInfo() {
//获取用户输入的内容
var userName = $("#textUser").val();
var userEmail = $("#textEmail").val();
var dataString = userName + "----" + userEmail;
//创建li标签并写入内容
//创建li标签
var newLi = $("<li>").text(dataString);
//将li标签放入ul中
$("#view").append(newLi);
}
</script>
</body>
</html>
7.6 jquery中的绑定事件
DOM的绑定事件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>jquery</title>
<style>
</style>
</head>
<body>
<input type="button" value="提交" onclick="getInfo()">
<script src="bootstrap/bootstrap-3.4.1-dist/js/jquery-3.6.0.min.js"></script>
<script type="text/javascript">
function getInfo() {
}
</script>
</body>
</html>
jquery的事件绑定:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>jquery</title>
<style>
</style>
</head>
<body>
<ul>
<li></li>
<li></li>
<li></li>
</ul>
<script src="bootstrap/bootstrap-3.4.1-dist/js/jquery-3.6.0.min.js"></script>
<script type="text/javascript">
//给所有的li标签绑定所有的事件
$("li").click(function (){
//点击li标签时自动执行这个函数
//$(this) 当前你点击的标签
})
</script>
</body>
</html>
7.6.1 案例:绑定事件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>jquery</title>
<style>
</style>
</head>
<body>
<ul>
<li>百度</li>
<li>谷歌</li>
<li>搜狗</li>
</ul>
<script src="bootstrap/bootstrap-3.4.1-dist/js/jquery-3.6.0.min.js"></script>
<script type="text/javascript">
//给所有的li标签绑定所有的事件
$("li").click(function () {
var text = $(this).text();
console.log(text)
})
</script>
</body>
</html>
7.6.2 删除标签
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>jquery</title>
<style>
</style>
</head>
<body>
<div id="c1">内容</div>
<script src="bootstrap/bootstrap-3.4.1-dist/js/jquery-3.6.0.min.js"></script>
<script type="text/javascript">
$("#c1").remove();
</script>
</body>
</html>
7.6.3 案例加删除标签
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>jquery</title>
<style>
</style>
</head>
<body>
<ul>
<li>百度</li>
<li>谷歌</li>
<li>搜狗</li>
</ul>
<script src="bootstrap/bootstrap-3.4.1-dist/js/jquery-3.6.0.min.js"></script>
<script type="text/javascript">
//给所有的li标签绑定所有的事件
$("li").click(function () {
$(this).remove();
})
</script>
</body>
</html>
7.6.4 当页面框架执行完成后自动执行的函数
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>jquery</title>
<style>
</style>
</head>
<body>
<ul>
<li>百度</li>
<li>谷歌</li>
<li>搜狗</li>
</ul>
<script src="bootstrap/bootstrap-3.4.1-dist/js/jquery-3.6.0.min.js"></script>
<script type="text/javascript">
$(function () {
$("li").click(function () {
$(this).remove();
})
})
</script>
</body>
</html>
7.7 案例:表格操作
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>jquery</title>
<style>
</style>
</head>
<body>
<table border="1">
<thead>
<tr>
<td>id</td>
<td>姓名</td>
<td>操作</td>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>zxr</td>
<td>
<input type="button" value="删除" class="delete">
</td>
</tr>
<tr>
<td>2</td>
<td>zxr</td>
<td>
<input type="button" value="删除" class="delete">
</td>
</tr>
<tr>
<td>3</td>
<td>zxr</td>
<td>
<input type="button" value="删除" class="delete">
</td>
</tr>
<tr>
<td>4</td>
<td>zxr</td>
<td>
<input type="button" value="删除" class="delete">
</td>
</tr>
</tbody>
</table>
<script src="bootstrap/bootstrap-3.4.1-dist/js/jquery-3.6.0.min.js"></script>
<script type="text/javascript">
$(function () {
//找到所有class标签并绑定事件
$(".delete").click(function () {
//删除当前行数据
$(this).parent().parent().remove();
})
})
</script>
</body>
</html>