目录
一.jQuery知识点梳理
1.jQuery入门&选择器
- 3W1H
- 选择器
2.1.基本选择器:#id .class 元素 *通配符
2.2.层次选择器:逗号, 空格 大于> 波浪~ 加号+
2.3.过滤选择器: :first :last :eq :gt :lt :even :odd
2.4.表单选择器: :radio :checkbox :checked :selected
案例1 表格隔行换色
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>隔行换色</title>
<style>
.aa{
background-color: aqua;
}
.bb{
background-color: deeppink;
}
</style>
</head>
<body>
<table border="1px" width="400px">
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
</table>
</body>
<script src="jquery-3.6.4.js"></script>
<script>
//隔行换色
$("table tr:even").addClass("aa");
$("table tr:odd").addClass("bb");
</script>
</html>
二.$工具方法&属性&CSS
- 1.$.each $.trim $.type $.isArray $.isFunction $.parseJSON
- 2.attr() prop() addClass() removeAttr() removeClass() val() text() html()
- 3.css("属性","属性值") css({"属性":"属性值","属性":"属性值"})
案例2:实现全选功能
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>全选</title>
</head>
<body>
<input type="checkbox" id="qx"/>全选
<input type="checkbox" class="bb" />打小灰灰
<input type="checkbox" class="bb" />SB小辉辉
<input type="checkbox" class="bb"/>听歌
<input type="checkbox" class="bb"/>看电视
</body>
<script src="jquery-3.6.4.js"></script>
<script>
$(function(){
$("#qx").click(function(){
$(".bb").prop("checked",$(this).prop("checked"));
})
})
$(".bb").click(function(){
let f = true;
$(".bb").each(function(i,pp){
if(pp.checked==false){
f=false;
}
})
$("#qx").prop("checked",f);
})
</script>
</html>
三.筛选&过滤&位置
- 查 first() last() eq() prevAll() nextAll() siblings() find() children() filter() has() not()
- 增 append()/appendTo() prepend()/prependTo() after()/before()
- 删 empty() remove()
- 改 replaceWith()
案例3.实现返回顶部功能
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>$工具方法&&jQuery属性&CSS</title>
<!-- 引入外部js -->
<script src="jquery-3.6.4.js"></script>
<!-- 另起一个script块 -->
<script>
$(function(){
// 获取滚动条位置 返回顶部案例
$("#btn").click(function () {
//设置值 返回顶部
$("body,html").scrollTop(0);
})
})
<script/>
<head/>
<body>
<input type="button" value="返回顶部" id="btn" />
<body/>
四.事件&效果
- 事件 .on/bind("事件名",callback) .事件名(callback) one() off/unbind解绑事件
- 合成事件:hover(function(){移上},function(){移出}) toggle()点击切换合成事件
- 效果 show(时间,callback) hide() toggle() slideDown/slideUp slideToggle fadeIn/fadeOut/fadeToggle xx.animat({属性:属性值,....},time)
案例4.合成事件控制显示和隐藏
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>显示和隐藏</title>
</head>
<body>
<a href="#">显示</a><br/>
<img src="img/3.jpg" width="200px" id="oo"/>
</body>
<script src="jquery-3.6.4.js"></script>
<script>
//显示和隐藏
$(function(){
$("a").hover(function(){
$("#oo").show();//显示
},function(){
$("#oo").hide();//隐藏
})
})
</script>
</html>
二.JavaScript知识点梳理
一.js核心语法
变量的声明? 数据类型? 运算符? 3种弹框?
- number string boolean null undefined object array
- /只做除法 不做取整 除得尽就是整数 除不尽就是小数
- alert(消息) confirm(询问) prompt(输入)
- console.log/info() F12 开发者模式输出 typeof()返回数据类型
- document.write() 类似于sout
二.函数和window对象
1、函数
- 常用系统函数 parseInt 将字符串--->整数 parseFloat 将字符串--->小数 isNaN 判断是否是非数字 数字:false 非数字:true
- 自定义函数
2.1.如何带参? a,b,c
2.2.返回 return
3.匿名函数 window.οnlοad=function(){}
2、window对象
- 属性 location href/reload history back/forward/go()
- 方法 open close setInterval setTimeout
- 事件 onclick onmouseover onmouseout onload onchange onscroll
案例①图片自动切换
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>案例一:图片自动切换</title>
<script>
let i=5;
function mya(){
//获取图片id
let myy=document.getElementById("aa");
//获取图片路径
myy.src="img/"+i+".jpg";
i++;
if(i==6){
i=1;
}
}
//页面载入
window.onload=function(){
setInterval(() => {
mya();
}, 1000);
}
</script>
</head>
<body>
<img src="img/1.jpg" width="200px" id="aa"/>
</body>
</html>
案例②时钟特效
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>时钟特效</title>
<script>
function myf( ){
//拿到系统的当前时间
let d = new Date( );
//如果要赋值 d.setye
//单独拿年月日时分秒
let y = d.getFullYear( );
let m = d.getMonth( )+1;
// let r = d.getDay( );//day是星期数
let r = d.getDate( );//日
let h = d.getHours( );
let f = d.getMinutes( );
let s = d.getSeconds( );
let str = y+"年"+m+"月"+r+"日"+" "+h+":"+f+":"+s;
//给div赋值
document.getElementById("time").innerHTML=str;
// 方法二:
//调用自己的方法 递归
setTimeout("myf( )",1000);
}
// 方法一:定时器
// function mys( ){
// //每隔1s调用一次myf( ) 单位: 毫秒
// //setInterval("myf( )",1000);
//方法二:递归
// //1s后调用一次myf( )
// setTimeout( "myf( )",1000);
// }
//方法一:
//在body内容加载完毕后自动调用mys( )
// window.onload=mys;
//方法二:
window.onload=myf;
</script>
</head>
<body>
<div id="time"></div>
</body>
</html>
三.BOM编程
1、访问页面元素的三种方式
1.1.getElementById 通过id找到元素
1.2.getElementsByName 通过名字找一堆元素 返回数组
1.3.getElementsByTagName 通过标签名找到一堆元素 返回数组
2、控制元素的显示和隐藏 xx.style.display="none/block" 隐藏/显示
案例③树型菜单
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>树型菜单</title>
<style>
li{list-style: none;}/*去点*/
a{text-decoration: none;}/*去除下划线*/
a:link{color: chartreuse;}/*未访问*/
a:hover{color: pink;}/*鼠标移上*/
</style>
<script>
function myf(id){
//根据id拿到ul块
let bb=document.getElementById(id);
//如果之前是隐藏的
if(bb.style.display=="none"){
//让其显示
bb.style.display="block";
}
else{//如果它是显示的 就隐藏
bb.style.display="none";
}
}
</script>
</head>
<body>
<div>
<li><a href="javascript:myf('aa')">美女群</a></li>
<ul style="display: none;" id="aa">
<li>瑶瑶</li>
<li>欣欣</li>
<li>(宝ᴗ宝)</li>
</ul>
<li><a href="javasrcipt:myf('cc')">帅哥群</a></li>
<ul style="display: none;" id="cc">
<li>小红花</li>
<li>懒洋洋</li>
<li>小灰灰</li>
</ul>
</div>
</body>
</html>
四.DOM编程
一.操作节点( 增删改查 )
- 查 firstChild lastChild childNodes(子节点们) getAttribute() 根据属性名拿到属性值 setAttribute() 给指定属性名设置属性值
- 增 createElement
- 删 removeChild
- 改 replaceChild
- 复制 cloneNode
- 位置 insertBefore 插入到...之前 appendChild 追加到最后
二.动态操作表格(注意层级关系)
一.行 row
1.tab.insertRow(位置)
2.tab.deleteRow(行下标)
3.row.rowIndex 拿到其行下标
4.tab.rows 拿到所有的行
二.列 cell
- row.insertCell(下标)
- c0.innerHTML=""
- row.deleteCell()
- row.cells 拿到所有的列
案例④掌握节点的增删改查
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>节点的增删改查</title>
<script>
function myc(){//查看
//根据id找到图片
let myi=document.getElementById("aa");
//根据属性名得到属性值
// let mpath=myi.getAttribute("src");//拿到图片路径
// let mwidth=myi.getAttribute("width");
// alert(mwidth);
// alert(mpath);
}
function myz(){//增加
//根据id找图片
let myi=document.getElementById("aa");
//创建图片节点
let newImg=document.createElement("img");
//给图片赋值 src width
newImg.setAttribute("src","img/照片.jpg");
newImg.setAttribute("width","300px");
//把该图片插入到myi的前面
document.body.insertBefore(newImg,myi);
}
function myf(){//克隆
//根据id找到图片
let myi=document.getElementById("aa");
//克隆节点 是否连同子节点一同克隆
let copyImg=myi.cloneNode(false);
追加到文档的最后面
document.body.appendChild(copyImg);
}
function myq(){//删除
//根据id找到图片
let myi=document.getElementById("aa");
//移除掉
document.body.removeChild(myi);
}
function myt(){
//根据id找图片
let oldImg=document.getElementById("aa");
//创建新的图片节点
let newImg=document.createElement("img");
//给该节点设置路径和宽度
newImg.setAttribute("src","img/壁纸01.jpeg");
newImg.setAttribute("width","300px");
//用新的节点去替换旧的节点
document.body.replaceChild(newImg,oldImg);
}
</script>
</head>
<body>
<img src="img/1111.jpg" width="200px" id="aa"/>
<input type="button" value="查看" onclick="myc()" />
<input type="button" value="增加" onclick="myz()"/>
<input type="button" value="克隆" onclick="myf()"/>
<input type="button" value="删除" onclick="myq()"/>
<input type="button" value="替换" onclick="myt()"/>
</body>
</html>
五.JavaScript和CSS的交互
一.两种方式实现交互
- className属性方式
- style属性方式
二.随鼠标滚动的广告图片
- scrollLeft/scrollTop
案例⑤制作随鼠标滚动的广告图片
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<!-- position:fixed 让图片滚动!!! -->
<div style="position:fixed">
<img src="img/壁纸1.png" width="100px"/>
</div>
<div>
<img src="img/壁纸2.jpeg" width="200px"/>
</div>
<div>
<img src="img/壁纸3.png" width="300px"/>
</div>
<div>
<img src="img/壁纸4.jpg" width="300px"/>
</div>
<div>
<img src="img/壁纸5.jpeg" width="300px"/>
</div>
</body>
</html>
案例⑥实现表格的高亮效果
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>实现表格的高亮效果</title>
<style>
/* 第一种方式 */
.aa{
background-color: aquamarine;
}
.bb{}
</style>
<script>
// //第二种方式
// window.onload=function( ){
// //一次性拿到所有标签
// let ts = document.getElementsByTagName("tr");
// //遍历
// for(let i=0;i<ts.length;i++){
// // ts[i] 每一行
// ts[i].onmouseover=function( ){
// this.style.backgroundColor="pink";
// }
// ts[i].onmouseout=function( ){
// this.style.backgroundColor="white";
// }
// }
// }
window.onload=function( ){
//一次性拿到所有标签
let ts=document.getElementsByTagName("tr");
//遍历
for(let i =0;i<ts.length;i++){
//ts[i]
ts[i].onmouseenter=function(){
this.style.backgroundColor="pink";
}
ts[i].onmouseout=function(){
this.style.backgroundColor="yellow";
}
}
}
</script>
</head>
<body>
<!-- 第一种方式: className js和Css交互 this:当前这一行-->
<!-- <tr onmouseover="thisq.className='aa'" onmouseout="this.className='bb'"> -->
<table border="1px" width="400px">
<tr >
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
</table>
</body>
</html>
六.表单验证
一.String的诸多方法
- length 长度
- charAt() 指定下标的字符
- substring/substr 截取
- indexOf 找元素第一次出现的位置
二.正则表达式
- /^正则$/
- test()
三.提示两种方式
- alert()
- 右侧显示 失焦 onblur() 获得焦点 onfocus() 表单提交事件 onsubmit() return
七.省市级联&数组的遍历
- onchange下拉框的改变事件
- add(new Option(text,value))
- 二维数组的遍历
案例⑦省级联动
var cityList = new Array();
cityList['北京市'] = ['朝阳区', '东城区', '西城区', '海淀区', '宣武区', '丰台区', '怀柔', '延庆', '房山'];
cityList['上海市'] = ['宝山区', '长宁区', '丰贤区', '虹口区', '黄浦区', '青浦区', '南汇区', '徐汇区', '卢湾区'];
cityList['广州省'] = ['广州市', '惠州市', '汕头市', '珠海市', '佛山市', '中山市', '东莞市'];
cityList['深圳市'] = ['福田区', '罗湖区', '盐田区', '宝安区', '龙岗区', '南山区', '深圳周边'];
cityList['重庆市'] = ['俞中区', '南岸区', '江北区', '沙坪坝区', '九龙坡区', '渝北区', '大渡口区', '北碚区'];
cityList['天津市'] = ['和平区', '河西区', '南开区', '河北区', '河东区', '红桥区', '塘古区', '开发区'];
cityList['江苏省'] = ['南京市', '苏州市', '无锡市'];
cityList['浙江省'] = ['杭州市', '宁波市', '温州市'];
cityList['四川省'] = ['四川省', '成都市'];
cityList['海南省'] = ['海口市'];
cityList['福建省'] = ['福州市', '厦门市', '泉州市', '漳州市'];
cityList['山东省'] = ['济南市', '青岛市', '烟台市'];
cityList['江西省'] = ['江西省', '南昌市'];
cityList['广西省'] = ['柳州市', '南宁市'];
cityList['安徽省'] = ['安徽省', '合肥市'];
cityList['河北省'] = ['邯郸市', '石家庄市'];
cityList['河南省'] = ['郑州市', '洛阳市'];
cityList['湖北省'] = ['武汉市', '宜昌市'];
cityList['湖南省'] = ['湖南省', '长沙市'];
cityList['陕西省'] = ['陕西省', '西安市'];
cityList['山西省'] = ['山西省', '太原市'];
cityList['黑龙江省'] = ['黑龙江省', '哈尔滨市'];
cityList['其他'] = ['其他'];
//验证地区 二级联动
//初始化省份下拉框的数据
let initSf = () => {
//获取省份下拉框的id
let sf = $("province");
//循环数组cityList element:不能代表每一个省份 下标才能代表省份 i代表下标
for (i in cityList) {
sf.add(new Option(i));
}
};
//改变城市下拉框的数据
let changeCs = () => {
let f = false;
//获取城市下拉框的id
let cs = $("city");
//清除城市下拉框里面原来的数据
cs.length = 0;
//获取所选择省份的id下拉框的内容值
let sf = $("province").value;
//给城市下拉框添加数据
for (i in cityList) {// i 代表省份
if (i === sf) {//确定所选择的省份 所选择的内容和文本框的一致
f = true;
for (j in cityList[i]) {// cityList[i] 每一个省份所对应的城市数组 j代表城市数组的下标
//给城市下拉框添加数据 new Option:
cs.add(new Option(cityList[i][j]));// cityList[i][j] 城市数组的每一个值
}
}
}
if (f === false) {
cs.add(new Option('--请选择城市--'));
}
}