事件定义式,在事件定义时直接写js代码
嵌入式,在标签内,写js代码
/* 把js代码写到script标签内部 /
/ script标签可以放到html的任何位置 */
/*但通常放到head标签中 */
/* function是关键字,用来声明函数 /
/ fn1是函数名,小括号内可以声明参数 /
/ js中函数都是公有的,不需要修饰符 /
/ 函数不需要声明返回值类型 /
/ 函数体中没写retrun,函数调用时默认返回值为undefined */
function fn1(){
alert(“我是嵌入式js的使用”);
}
function fn2(){
alert(“我是验证返回值”);
return 123;
}
文件调用式
my.js文件中
function fn3(){
console.log(“我是文件调用式”);
}
在标签内部写
js注释:标签中,是js地盘,要使用js的注释.
// /* js不区分单引号和双引号 */
标签中写js代码一般有两种形式 var s="hello";
var n=9;
var b=true;
console.log(s+n);//hello9
console.log(s+b);//hellotrue
console.log(n+b);//true--1 false--0
console.log(b+b);//
//var n=3.14;
//var s="3.14";
//console.log(n.toString()+1);
//console.log(parseInt(s)+1);
//console.log(parseFloat(s)+1);
//console.log(parseFloat("abc")+1);//not a number
//console.log(parseInt(""));//NaN
function fn1(){
var num=100;
console.log(typeof(num)=="number");
var str="abc";
console.log(typeof(str)=="string");
console.log(typeof(null));
console.log(typeof(undefined));
}
function fn2(){
//is 是什么
//NaN not a number 不是一个数
//isNaN 是不是 不是一个数
console.log(isNaN(56));//f 不是 NaN
console.log(isNaN("32"));//f
console.log(isNaN("abc"));//t 是 NaN
console.log(isNaN(""));//f
console.log(parseInt(""));//此处是个bug
}
[外链图片转存失败(img-HLySXJWT-1565451396209)(1.png)]
= 计算的结果
[外链图片转存失败(img-pDBLei9x-1565451396210)(2.png)]
if("afsda"){
console.log(1111);
}
if(NaN){
}else{
console.log(11111);
}
426029026218 2
求出前12位奇数位数字之和.462061=19
求出前12位偶数位数字之和.209228=23
把 前12位奇数位数字之和 与 偶数位数字之和的3倍相加.19+69=88
取结果的个位数. 8
用10减去这个个位数. 2
再取结果的个位数. 2
for(var i=0;i<12;i++){
console.log(i);
}
#day 07
- n(正整数)的阶乘 1*2*3...*n
- 0的阶乘,固定为1
- 负数,小数没有阶乘
[外链图片转存失败(img-6VNrMuWP-1565451396211)(1.png)]
n(正整数)的阶乘 1*2*3...*n
0的阶乘,固定为1
负数,小数没有阶乘
var str1="hello world";
var str2=new String("hello world");
str.toLowerCase();
str.toUpperCase();
str.charAt(index);
var str="javascript网页教程";
var str1=str.charAt(12);
str.indexOf("");
str.lastIndexOf("");
var str="javascript网页教程";
var index=str.indexOf("a");
var index=str.lastIndexOf("a");
str.substring(star,[end]);
var str="abcdefghi";
//包头不包尾
var str1=str.substring(2,4);
str.replace(str1,str2);
str1--要找到的字符串
str2--新的字符串
返回值是替换后的字符串
var str="abcde";
var str1=str.replace("cd","aaaa");
str.split(str1,[length]);
str1--分割用的子字符串
length,指定返回数组的最大长度,可省略
返回值为,分割之后的字符串数组
var str="一,二,三,四,五,六,日";
var strArray=str.split(",",5);
[外链图片转存失败(img-HyFAAsHJ-1565451396212)(2.png)]
toFixed(length):把number转换为字符串,保留小数点后一定的位数.如果必要,该数字会被四舍五入,也可以用0补足位数
var arr=["打一顿","不多于",12.3,true]
var arr1=new Array();
arr1[0]="123";
arr1.push(23);
Array在js中都是obj的数组
js中数组可以同时存放不同数据类型的值
js中的长度可变
两种创建方式,不管哪一种,创建出来,都是object类型
数组常用api
arr.reverse() // 反转输出
[外链图片转存失败(img-EeCOMdiX-1565451396213)(3.png)]
var arr=[5,12,3,14,26,1];
//var arr=["a","ab","b","c","bd","d"];
//console.log(arr.sort());//1,3,5,12,14,26
//修改比较规则,按照数字大小比较
/* function x(a,b){
return b-a;
} */
//该方法不需要复用,所以写成匿名函数
arr.sort(function(a,b){
return a-b;
});
用于数学计算
1.取整
console.log(Math.round(4.56));
2.
Math.floor(4.5);
创建客户机当前时间
var d1=new Date();
创建指定时间的date对象(指定时间一般源于服务器)
var d2=new Date(“2016/12/12 12:12:12”);
读写时间的毫秒数
getTime()读 setTime()写
### date的API
d1.getFullYear();//获取年
d1.getMonth();//获取月,需要+1,月份从0开始
d1.getDate();//月的天
d1.getDay();//周的天
d1.getHours();//获得小时
d1.getMinutes();//分钟
d1.getSeconds();//秒
d1.toString();
d1.toLocaleTimeString();
d1.toLocaleDateString();
. 任意字符
\w 任意字母,数字,下划线
\s 任意空白字符
\d 任意数字
^ 字符串开头
$ 字符串结束
- 直接创建
var reg=/正则表达式/[模式]
var reg=/no/g;
- 创建对象
var reg=new RegExp(正则表达式,[模式]);
var reg=new RegExp('\s\d');//此句有坑
- 全局模式,设定当前匹配为全局,g
- 设置当前匹配模式忽略大小写,i
reg.exec(str);
//从str中找到匹配正则的子串
//普通模式下,返回第一个符合要求的子串
//全局模式下,第n次执行,返回符合要求的第n个子串
var str="you can you up,no can no bi bi";
var reg=/no/g;
//reg.exec(str);
//从str中找到匹配正则的子串
//普通模式下,返回第一个符合要求的子串
//全局模式下,第n次执行,返回符合要求的第n个子串
console.log(reg.exec(str));
console.log(reg.exec(str));
console.log(reg.exec(str));
console.log(reg.exec(str));
//reg.test(str);
//判断str中是否 包含与reg匹配的子串
console.log(reg.test(str));
1. str.replace(reg,"");
将str中的与reg匹配的所有子串都替换成目标子串
var str="you can you up,no can no bi bi";
var reg=/no/g;
var str1=str.replace(reg,"bu");
console.log(str1);
2. str.match(reg);
从str中找出和reg匹配的子串,返回值是数组
var str="you can you up,no can no bi bi";
var reg=/no/g;
//var str1=str.replace(reg,"bu");
//console.log(str1);
console.log(str.match(reg));
3. str.search(reg);
从str中找出和reg匹配的第一个子串的索引
console.log(str.search(reg));
[外链图片转存失败(img-dj71rmog-1565451396214)(1.png)]
[外链图片转存失败(img-KllK4y7W-1565451396214)(2.png)]
var fn1=function(){alert(1111);}
function fn2(){
alert(1111);
}
- 不定义返回值的类型
- 默认返回值是undefined
- 可以使用return返回具体的值
function x(){
alert(arguments[0]);
}
x();
x(1,2);//不报错,问题是1和2究竟哪去了
[外链图片转存失败(img-hhUVvSSZ-1565451396215)(3.png)]
function add(){
var sum=0;
for(var i=0;i
typeof()
isNaN();
parseInt();
parseFloat();
var str="2+3";
eval(str);
var str="function aa(){alert(1111);}aa();";
eval(str);
[外链图片转存失败(img-cz60qse8-1565451396216)(4.png)]
document 窗口中显示的HTML文档对象
history 浏览过的历史记录对象
location 窗口文件地址对象
screen 屏幕对象
navigator 浏览器相关信息对象
弹出框
setInterval(exp,time);
exp:要执行的js语句,一般为匿名函数
time:时间周期,毫秒
返回值:返回已经启动的定时器ID
clearInterval(ID);停止定时器
//周期性定时器
function fn4(){//每一秒打印一个数 5,4,3,2,1
var num=5;
var id=setInterval(function(){
console.log(num--);
if(!num){// num==0
clearInterval(id);
}
},1000);
console.log("蹦蹦");
}
[外链图片转存失败(img-WoscuH7n-1565451396217)(5.png)]
[外链图片转存失败(img-h6OrkW51-1565451396218)(6.png)]
setTimeout(exp,time);
exp:执行的代码
time:延迟时间
返回值为id
clearTimeout(id);
[外链图片转存失败(img-Dl06tggb-1565451396219)(7.png)]
1. 返回值
2. 参数
function fn1(){
//跳转到目标url
//location.href="http://www.tmooc.cn/web/index_new.html?tedu";
//刷新
//location.reload();
var flag=confirm("你确定要离开本宝宝吗?");
if(flag){
location.href="http://www.tmooc.cn/web/index_new.html?tedu";
}
}
1. width/height
2. availWidth/availHeight
1. back()
2. forward();
3. go();//0是当前页,-1上一页 1下一页
1. 查找节点
1. 读写节点
2. 查询节点
3. 增删节点
//var p1=document.getElementById("p1");
//var p2=document.getElementsByTagName("p")[1];
//console.log(p2);
//console.log(p1);
//console.log(p1.nodeName);
//console.log(p1.nodeType);
总结:nodeType返回值,对应了节点的类型
1 --- 元素节点
2 --- 属性节点
3 --- 文本节点
8 --- 注释节点
9 --- 文档节点
nodeName和nodeType,在写js框架时用的非常多
正常开发,很少使用
2. 读取节点信息
双标签叫内容,
所有的双标签都有内容,
一般表单中的控件,数据称之为值
input select textarea都有value
今天天气不错
2.1 innerHTML
2.2 innerText
1. 读写节点
2. 查询节点
3. 增删节点
var p1=document.getElementById("p1");
console.log(p1.innerHTML);
console.log(p1.innerText);
//p1.innerHTML="1. 读写节点";
p1.innerText="1. 读写节点";
总结:innerHTML,认识标签
innerText,不认识标签,会把标签当成字符串
2.3 读写值
btn.value;
1. 通过方法读写属性**
//1.通过方法读写属性
var oImg=document
.getElementsByTagName("img")[0];
oImg.setAttribute("src","../img/02.png");
console.log(oImg.getAttribute("src"));
2. 通过标准属性名读写属性**
//2.通过标准的属性名读写属性
//className,id,style
var oP=document.getElementsByTagName("p")[0];
console.log(oP.style.color);
oP.style.fontSize="30px";
3. 通过不标准属性名读写属性,只有高版本浏览器才支持
//3.通过不标准属性名读写,不推荐
// a.href img.src
//使用方法去解决,不建议用
console.log(oImg.src);
3. 修改节点信息
4. 创建新节点
5. 删除节点
onmouseover鼠标悬停
onmouseout鼠标离开
div{
width: 256px;
height: 256px;
margin: 50px auto;
border: 2px solid #f00;
}
.show{
display: block;
}
.hide{
display: none;
}
如果想要操作HTML元素,必须先要找到该元素
查询节点方式方法
2.1 通过id查询
2.2 通过层次(节点关系)查询
2.3 通过标签名称查询
2.4 通过name属性查询
- 北京
- 上海
- 广州
- 深圳
- 佳木斯儿
- 葫芦岛
男
女
document.createElement(TagName);
TagName:要创建的元素的标签名称
返回值,就是这个标签的对象
把这个新标签对象,挂到dom树上
- 北京
- 上海
- 广州
- 深圳
- 佳木斯儿
function fn1(){
var oLi=document.createElement("li");
oLi.innerHTML="重庆";
var oUl=document.getElementsByTagName("ul")[0];
oUl.appendChild(oLi);
}
function fn2(){
var oLi=document.createElement("li");
oLi.innerHTML="铁岭";
//插入需要父级对象,和弟弟对象
var oUl=document.getElementsByTagName("ul")[0];
var gz=document.getElementById("gz");
//把新节点插入到父亲下级,弟弟之前
oUl.insertBefore(oLi,gz);
}
function fn3(){
//需要父级元素对象和要删除的元素对象
var oUl=document.getElementsByTagName("ul")[0];
var gz=document.getElementById("gz");
//通过父级对象删除孩子
oUl.removeChild(gz);
}
#day10
1. nodeName/nodeType
2. innerHTML/innerText
3. value
4. getAttribute/setAttribute
.className .id .style
1. ById
2. ByTagName
3. parentNode/ByTagName()
4. ByName
1. createElement(TagName)
2. parent.appendChild(newNode)
3. parent.insertBefore(newNode,弟弟对象)
4. parent.removeChild(节点对象)
[外链图片转存失败(img-IDpWvOeB-1565451396220)(1.png)]
省:
市:
- onclick
- ondblclick
- onmouseover//鼠标悬停
- onmouseout//鼠标离开
- onmousedown//鼠标按下事件
- onmouseup//鼠标抬起事件
- onkeydown
- onkeyup
- onload
- onchange
- onfocus//焦点获取
- onblur//失去焦点
- onsubmit
在标签属性中,直接处理事件
js代码中动态定义,可以把html代码和js代码分离,好维护
window.onload=function(){
var input=document
.getElementsByTagName("input")[0];
input.onclick=fn2;
}
function fn2(){
console.log("动态定义事件绑定");
}
取消事件 onXXX=“return false”;
div--p--btn
1. event.stopPropagation();
2. event.cancelBubble=true;
- 事件触发后,会自动产生一个event
[外链图片转存失败(img-ATYRqK6g-1565451396221)(2.png)]
在html属性中直接使用event对象
在js代码块中,直接使用event对象
在函数中使用event对象,必须以传参的方式
function fn2(event){
alert(event.clientX+’:’+event.clientY);
}
function fn3(event){
var obj=event.srcElement;
console.log(obj);
}
[外链图片转存失败(img-isHmNJRZ-1565451396222)(3.png)]
function bigger(){
//1.获取p的字号
var size=$("p").css("font-size");
//把"16px"变成可以计算的数字,去掉单位
size=size.replace("px","");
//字号加大号,设置p标签的字号
$("p").css("font-size",++size +"px");
}
[外链图片转存失败(img-rFM4OxhX-1565451396223)(1.png)]
- 北京
- 上海
- 广州
- 深圳
- 佳木斯儿
$(function(){
//1.基本选择器
$("li");
$("#gz");
$(".sz");
$("ul li");
$("ul>#gz");
$("ul .sz");
//2.层次选择器
$("#gz+li");//选择他的弟弟
$("#gz~");//选择他的弟弟们
//3.过滤选择器
//4.表单选择器
});
$("li:first");
$("li:lt(2)");//下标小于index的标签
$("li:odd");
$("li:last");
$("li:eq(0)");
$("li:not(#gz)")
$("li:contains('州')")
$("li:empty")
$("li:hidden").show();
$(“li:visible”).hide();
$("#abc").toggle();
$("li[style]")//li标签带有style属性
$("[href='#']")//带有href属性并且,值为'#'
$("[href!='#']")//带有href属性,并且值不为"#"
$("[href$='.jpg']")//有href,值以'.jpg'结尾
$("input:disabled")
$("input:checked")
$(":text");
var str=obj.html();
obj.html("123");
var str=obj.text();
obj.text("123");
var str=obj.val();
obj.val("abc");
obj.attr("属性名");
obj.attr("属性名","属性值");
jQuery支持读写节点
jQuery支持增删节点
function fn1(){
console.log($("p:eq(0)").html());
console.log($("p:eq(1)").text());
$("img").attr("src","../img/13.png");
$(":button").val("别点我");
//更改两个P标签的中文本内容,
//html(),text();
//打印当前img的src值
//打印当前button的value值
}
var oSpan=$("你好");
parent.append(obj);//做为最后子节点添加进来
parent.prepend(obj);//做为第一个
brother.before(obj);//做为上一个兄弟节点
brother.after(obj);//做为下一个兄弟节点
- 北京
- 上海
- 广州
- 深圳
- 杭州
function fn1(){//追加
var oLi=$("天津 ");
$("ul").append(oLi);
//$("ul").prepend(oLi);
}
function fn2(){//插入
var oLi=$("西安 ");
//$("#gz").before(oLi);
$("#gz").after(oLi);
}
obj.remove(); //删除这个节点
obj.remove(selector);//只删除满足selector条件的节点
obj.addClass("ok")
obj.removeClass("error");//移除指定的样式
obj.removeClass();//移除所有样式
obj.hasClass("ok")//判断是否有某个样式
obj.toggleClass("ok");//切换样式
obj.css("样式属性","样式的值");//设置具体样式
obj.css("样式属性");//获得具体样式的值
$("p").addClass("red").addClass("big");
$(function(){
setInterval(function(){
$("p").toggleClass("big").toggleClass("red");
},500);
});
1. 选择器过滤器 $("p")
2. 转型:Dom-->jQuery对象 $(Dom)
var oP=document.getElementsByTagName("p")[0];
$(oP).addClass(...)
3. 创建新节点
$("")
obj.html("abc")
obj.attr("src","../img/06.png")
obj.addClass("red").removeClass("red")
obj.val();
obj.html();
obj.text();
控制台输出,看对象结构
#day12
obj.html();/obj.html("");
obj.test();/obj.test("");
obj.val();/obj.val("");
$("嘿嘿嘿")
parent.append(obj)//添加最后一个子节点
parent.prepend(obj)//添加第一个子节点
brother.after(obj);//添加一个弟弟节点
brother.before(obj);//添加一个哥哥节点
obj.remove();
obj.remove(selector);//满足selector条件的节点被删除
obj.empty();
parent.html("");
obj.addClass("");
obj.removeclass("");//删除某一个class
obj.removeclass();//删除所有的样式
obj.hasClass("")//是否应用了某一个样式
obj.toggleClass("");//切换某一个样式
obj.children();/obj.children(selector);//获取直接子节点
obj.next();/obj.next(selector);//下一个弟弟
obj.prev()/obj.prev(selector);//上一个哥哥
obj.siblings();/obj.siblings(selector)//查询所有的兄弟,结果不含自己
obj.find(selector);//查找满足条件所有后代
obj.parent();
[外链图片转存失败(img-68XK5bG3-1565451396224)(1.png)]
$(function(){
$(".menu").click(function(){
if($(this).next().css("display")=="block"){
//把所有的ul都关闭
//所有的箭头都向右
$(".submenu").removeClass("dis")
.addClass("hide");
$(".menu").children("img")
.attr("src","../images/myOrder/myOrder1.png");
}else{
//关闭所有ul,把箭头向右
$(".submenu").removeClass("dis")
.addClass("hide");
$(".menu").children("img")
.attr("src","../images/myOrder/myOrder1.png");
//打开弟弟ul,把箭头向下
$(this).next().removeClass("hide")
.addClass("dis");
$(this).children("img")
.attr("src","../images/myOrder/myOrder2.png");
}
});
});
[外链图片转存失败(img-4KazRD6V-1565451396225)(3.png)]
真划算
商品
单价(元)
颜色
库存
好评率
操作
苹果air
26000
银色
12
50%
迪奥口红
300
#520
800
99%
戴森吹风机
3200
红色全球限量
3
100%
卫聋辣条
2
无色变态辣
5000
100%
樱桃机械键盘
560
黑色
50
100%
大宝sod蜜
26
乳白色
5000
100%
购物车
商品
单价(元)
数量
金额
删除
总计
- jq选择器,得到DOM数组,jq对这个数组做了拓展方法
- 带有jq方法的dom数组,称之为jq对象
- var ops=$("p")--->jq对象
- ops[0]---->DOM对象
- $(dom)---->jq对象
- 基本选择器
- 层次选择器
- 过滤器
- 基本过滤器
- 内容过滤器
- 可见性过滤器
- 属性过滤器
- 状态过滤器
- 表单选择器
obj.html();
obj.text();
obj.val();
obj.attr();
- 创建新节点 var newNode=$("")
- 挂到DOM树上
- parent.append(newNode)
- parent.prepend(newNode)
- brother.after(newNode)
- brother.before(newNode)
- 删除节点
obj.remove();
obj.remove(selector);
obj.addClass("className")
obj.removeClass("className")
obj.removeClass();
obj.hasClass();
obj.toggleClass();
obj.css(属性,属性值);
obj.children()/obj.children(selector)
obj.next();/obj.next(selector)
obj.prev();/obj.prev(selector)
obj.siblings()/obj.siblings(selector)
obj.parent();
obj.find(selector)
$(function(){
obj.click(function(){});//简写形式
//完整的语法
obj.bind("click",function(){});
});
事件冒泡机制,事件从内向外传播
作用:少些事件,通过获取事件源绑定一个事件
js: event.stopPropagation();
event.cancelBubble=true;
js var obj=event.srcElment || event.target;
jQ var obj=event.target;//jq直接兼容
.big{
width: 500px;
}
obj.trigger(事件类型)
$(":button").trigger("click");
show()/hide()
作用:通过同时改变元素的宽度和高度来实现显示或隐藏(透明度)
用法:obj.show(执行时间,回调函数)
执行时间:slow normal fast 写毫秒数
回调函数:传给某一个方法的函数,在方法结束时运行
function show(){
$("img:eq(0)").show(1500,function(){
console.log("显示完成");
});
}
function hide(){
$("img:eq(0)").hide(1500,function(){
console.log("隐藏完成");
});
}
div>div{
width: 200px;
height: 800px;
background: #990066;
opacity:.3;
}
function down(){
$("div:eq(1)>div").slideDown(2000);
}
function up(){
$("div:eq(1)>div").slideUp(2000);
}
slideUp()/slideDown()
作用:通过改变高度来实现显示或者隐藏效果
用法同上!
fadeIn()/fadeOut();
作用:通过改变透明度opacity来实现显示或者隐藏
用法同上!!!
function hint(){
$("img:eq(1)").fadeOut(1000).fadeIn(1000);
}
animate(偏移位置,执行时间,回调函数);
偏移位置:{'left':'500px'}
描述动画执行之后元素的样式位置
img{
position: relative;
}
function diy(){
$("img")
.animate({'left':'500px'},500)
.animate({'top':'200px'},200)
.animate({'left':'0px'},500)
.animate({'top':'0px'},200);
}
*,ul,a{
margin: 0;
padding: 0;
list-style: none;
text-decoration: none;
}
#banner_wrap{
width: 1000px;
height: 400px;
margin: 0 auto;
overflow: hidden;
/*超出位置隐藏*/
position: relative;
border: 1px solid #dddddd;
margin-top: 30px;
}
#banner_wrap>#banner{
position: absolute;
height: 400px;
}
#banner>.oLi{
width: 1000px;
height: 400px;
float: left;
}
#banner_wrap>.btn{
position: absolute;
top: 50%;
z-index: 2;
width: 35px;
height: 70px;
margin-top: -35px;
border-radius: 3px;
opacity: .15;
background: red;
cursor: pointer;
transition: opacity .2s linear 0s;
}
#banner_wrap>.left{
background: url("../images/arrow-left.png") #000 no-repeat 50%;
left: 5px;
}
#banner_wrap>.right{
background: url("../images/arrow-right.png") #000 no-repeat 50%;
left: 960px;
}
#banner_wrap:hover>.btn{
opacity: 0.3;
}
.focus{
width: 108px;
height: 20px;
position: absolute;
z-index: 3;
left: 50%;
margin-left: -54px;
bottom: 12px;
}
.focus>.focus_li{
width: 12px;
height: 12px;
float: left;
margin: 4px 4px;
background: #fff;
border-radius: 50%;
}
$(function() {
// 1.定义计数器,定时器
var num = 0;
var timer = null;
// 让第一个焦点刷新就显示
$('.focus_li').eq(0).css('background', '#0AA1ED');
//2.动态获取ul的宽度
//widht()方法是jq dom中的方法,是可以直接计算的宽度,写参数的情况下为赋值,不写参数为获取高度同理height()
$('#banner').width($('.oLi').eq(0).width() * $('.oLi').size());
// 3.定义轮播方法
function BannerLeft() {
// 原理与js一模一样
if (num < $('.oLi').size() - 1) {
num++;
} else {
num = 0;
}
// 动起来的方法为jq中的自定义动画animate({方法里面以键值对的方式来写},这里的位置是动画的执行时间)
$('#banner').animate({
left: -$('.oLi').eq(0).width() * num
}, 500)
// 焦点轮播,对比js,这里就一句话
$('.focus_li').eq(num).css('background', '#0AA1ED').siblings('li').css('background', '#fff');
}
// 4.使用定时器启动轮播
timer = setInterval(BannerLeft, 2000);
// 右侧按钮专用
function BannerRight(){
// 当num=0的时候为第一张图片,如果想要向右滚动图片,这个时候就需要把当前的第一张变成最后一张,这样向右去滚动
if(num==0){
// 如果是第一张,回到最后一张
num = $('.oLi').size()-1;
}else{
// 向右滚动
num--;
}
// 动起来的方法为jq中的自定义动画animate({方法里面以键值对的方式来写},这里的位置是动画的执行时间)
$('#banner').animate({
left: -$('.oLi').eq(0).width() * num
}, 500)
// 焦点轮播,对比js,这里就一句话
$('.focus_li').eq(num).css('background', '#0AA1ED').siblings('li').css('background', '#fff');
}
// 获取最外层div
$('#banner_wrap').mouseover(function(event) {
// 清除定时器
clearInterval(timer);
});
// 获取最外层div
$('#banner_wrap').mouseout(function(event) {
// 开启定时器
timer = setInterval(BannerLeft, 2000);
});
// 左侧的按钮
$('.left').click(function(event) {
// 这里添加一个停止动画方法是为了能够在用户快速点击操作的时候,停止上一次的轮播动画的效果,如果不停止效果则会一直执行完成
$('#banner').stop();
BannerRight();
});
// 右侧的按钮
// 这里添加一个停止动画方法是为了能够在用户快速点击操作的时候,停止上一次的轮播动画的效果,如果不停止效果则会一直执行完成
$('.right').click(function(event) {
$('#banner').stop();
BannerLeft();
});
// 焦点触摸事件
$('.focus_li').mouseover(function(event) {
// 同理解决动画的执行完成问题
$('#banner').stop();
// $(this)JQ中的当前元素,index()是jq中定义好的获取下标的方法,解决num值传不过去的坑
num = $(this).index();
// 当前鼠标经过的显示
$(this).css('background', '#0AA1ED').siblings('li').css('background', '#fff');
$('#banner').animate({
left: -$('.oLi').eq(0).width() * num
}, 500)
});
})