js day7dom and bom

BOM概念
BOM : Browser Object Model 浏览器对象模型,用来描述与浏览器进行交互的方法和接口。
BOM提供了很多对象,用于访问浏览器的功能,这些功能与任何网页内容无关。
BOM 的核心对象是 window ,它表示浏览器的一个实例。window对象有双重角色,它既是通过JavaScript 访问浏览器窗口的一个接口,又是ECMAScript规定的全局对象。这意味着在网页中定义的任何一个对象、变量和函数,都以window作为其全局对象。
window内置对象及方法
location对象
href属性  控制浏览器地址栏的内容
reload(true)方法   刷新页面,如果参数为true,通过缓存刷新。
navigator对象
userAgent  用户代理信息,通过该属性可以获取浏览器及操作系统信息
BOM相关的事件和操作
BOM的常用事件
onload事件:页面内容加载完成(DOM结构,图片.....)
onscroll事件:拖动浏览器的滚动条触发此事件。
onresize事件:浏览器窗口缩放所触发的事件。
可视区的宽高
document.documentElement.clientWidth
document.documentElement.clientHeight
滚动条距离(某些浏览器下面做兼容)
document.documentElement.scrollTop
document.body.scrollTop
window.scrollTo(xpos,ypos)
xpos必需,要在窗口文档显示区左上角显示的文档的 x 坐标。
ypos必需,要在窗口文档显示区左上角显示的文档的 y 坐标。
定时器
setInterval(函数名称,时间);间隔定时器(反复调用)
clearInterval( 定时器的返回值 );  停止定时器
setTimeout(函数名称,时间); 延时定时器
clearTimeout( 定时器的返回值 ); 停止定时器


DOM的概念及作用
DOM是”Document Object Model”的首字母缩写,即文档对象模型。用来描绘一个层次    化的节点树,允许开发人员获取、添加、移除和修改页面的某一部分元素。
     
DOM的基本操作
查询(获取元素)
getElementById(): 获取特定 ID 元素的节点
getElementsByTagName(): 获取相同元素的节点列表,返回类数组,使用[0]来获取
getElementsByClassName(): 获取相同类名的节点列表(IE8及以下不支持),返回类数组
getElementsByName(): 获取相同的name值的元素列表,返回类数组
querySelector(): 通过选择器获取元素,如果获取多个只返回第一个。
querySelectorAll(): 通过选择器获取元素,可同时获取多个元素,返回类数组。/'kwɪri/
document.documentElement 获取的html标签元素
document.body 获取body标题元素
创建、添加、删除、克隆、替换
document.createElement() :文档上创建一个元素节点/krɪ'et/
box.appendChild(node) :把node节点插入到box的内部最后的位置a
box.insertBefore(newNode, existNode):在box内,把newNode节点插入到exsitNode的前面/'ɪnsɝt/
box.removeChild(node):删除box内部的子节点
obj.cloneNode():克隆(复制)obj节点,可以传一个布尔值为参数,如果参数为true,连同obj子元素一起克隆。/klon/
obj.replaceChild(新添加的节点 , 被替换的节点):替换子节点
默认属性和自定义属性及getAttribute等方法 。obj.attributes返回的是一个关于obj属性的类数组!
getAttribute() 获取特定元素节点属性的值,某些低版本浏览器不支持. əˈtrɪbjut
setAttribute() 设置特定元素节点属性的值,某些低版本浏览器不支持
removeAttribute() 移除特定元素节点属性,某些低版本浏览器不支持
outerHTML/innerHTML/innerText 
innerHTML:读写元素节点里的内容,从节点的起始位置到终止位置的全部内容,包括内部的元素。
outerHTML:除了包含innerHTML的全部内容外, 还包含元素节点本身。
innerText:获取某个元素节点的文本内容
DOM元素类型
节点可以分为元素节点、属性节点和文本节点...,他们分别用不同的数字代表类型。
例如:元素(1) 属性(2) 文本(3)
每个元素节点又有三个非常有用的属性,分别为:nodeName、nodeType、nodeValue
parentNode 获取当前节点的父节点           /nod/
childNodes节点的集合      /nəuds/
childNodes 获取当前元素节点的所有子节点,这里面包含空白节点,但在IE9之前,IE浏览器会自动忽略空白节点.返回的也是一个类数组
获取css属性的值
属性,没有单位
offsetWidth、offsetHeight:获取元素盒模型的尺寸
offsetLeft、offsetTop :元素的偏移值(和定位有关)
offsetParent :获取定位父亲元素。
获取任意的css属性的值,有单位。
getComputedStyle :标准浏览器
currentStyle :IE浏览器
文档碎片(createDocumentFragment)
文档碎片在理论上可以提高DOM操作的执行效率,将要追加的dom操作先放置在文档碎片中,最后在追加给对应的元素。
强化练习
1.广告弹出窗(自动关闭+添加倒计时效果)

2.顶部悬浮效果(百度新闻的导航)
3.回到顶部效果(百度新闻的回到顶部效果)
4.动态创建表格和删除操作
5.模拟进度条

6.简易年历
7.点击按钮换图片(可参考百度新闻的轮播图)
8.tab切换案例

//一.js依靠浏览器进行解释的--BOM(浏览器对象模型)

//BOM的核心--window对象

//BOM :++ Browser Object Model 浏览器对象模型,用来描述与浏览器进行交互的方法和接口

//BOM提供了很多对象,用于访问浏览器的功能,这些功能与任何网页内容无关。

 

 

//二.window下面的子对象。

//1.location对象

//地址栏后面可以通过?和&传递数据。

//https://tmall.com/shop/view_shop.html?spm=a21bo & pvid=e60f7e5d & pos=10

 

//1.1 href属性  控制(读写)浏览器地址栏的内容

//alert(location.href);//获取

//location.href='http://www.baidu.com';//设置

//1.2 reload(true)方法   刷新页面,如果参数为true,通过缓存刷新。

//alert(123);

//location.reload(true);

 

//1.3 search属性:获取地址栏后面从?开始的数据(包括?)。location.search().sbustring(1)==截取?之后的数据

 

//思考题:将地址栏后面的数据转换成对象。

//https://tmall.com/shop/view_shop.html?spm=a21bo & pvid=e60f7e5d & pos=10

/*var obj={

spm:a21bo,

pvid:e60f7e5d,

pos:10

}*/

 

//2 navigator对象

    //userAgent  用户代理信息,通过该属性可以获取浏览器及操作系统信息

    //获取浏览器的信息

     //alert(navigator.userAgent);

 

//3 history对象:控制浏览器的前进后退按钮

//history.forward();//前进

//history.back();//后退

//history.go(num);//正数前进,负数后退

 

//4 open/close打开关闭浏览器。

//window.open('http://www.jd.com','_blank');//打开页面。

/*document.οnclick=function(){

window.close();//关闭页面

}*/

 

</script>

  1. 事件

<script type="text/javascript">

//1.onload事件:页面内容加载完成(DOM结构,图片.....)之后,再触发里面的代码按顺序加载时,若js放在前面,元素会找不到,用onload

//html任意地方引入js.因为内容加载完成后触发。

window.οnlοad=function(){//页面内容加载完成之后,再触发里面的代码

//var oBox=document.getElementById('box');

//alert(oBox);

}

</script>

<div id="box">123456</div>

<script type="text/javascript">      

//var oBox=document.getElementById('box');

//alert(oBox);//[object HTMLDivElement]

      //2.onscroll事件:拖动浏览器的滚动条触发此事件。

//此事件的触发频率很高。拖到滚动条一次,会产生多次事件

/*window.οnscrοll=function(){

console.log('hello,滚动条');

}*/

//3.onresize事件:浏览器窗口缩放所触发的事件。也有触发频率,但频率没有onscroll多

/*window.οnresize=function(){

console.log('hello,浏览器的窗口');

}*/

</script>

  1. 可视区的宽高

<script type="text/javascript">

//1.可视区宽高,用户能够看得见的区域。

//获取html:document.documentElement

/*window.οnresize=function(){

console.log(document.documentElement.clientWidth);

console.log(document.documentElement.clientHeight);

}*/

//2.获取滚动条的距离onscroll使原有的,scrolltop是html变有的

/*window.οnscrοll=function(){

console.log(document.documentElement.scrollTop);

}*/

 

//3.window.scrollTo(xpos,ypos);

/*document.οnclick=function(){

window.scrollTo(0,0);

}*/

 

 

</script>

  1. 定时器

//1.间隔定时器

//setInterval(函数名,时间);间隔定时器(反复调用)

//clearInterval( 定时器的返回值 );  停止定时器

/*var timer=null;

var i=0;

function fn(){

console.log(i);

i++;

}

 

//setInterval(fn(),1000);//不能这样写setInterval(fn(),1000);只能执行一次,()表示已经出发了

timer=setInterval('fn()',1000);

 

document.οnclick=function(){//停止定时器

clearInterval(timer);

}*/

 

/*var timer=null;

var i=0;

timer=setInterval(function(){

console.log(i);

i++;

},1000);

document.οnclick=function(){//停止定时器

clearInterval(timer);

}*/

 

//2.延迟定时器:规定的时间延迟触发一次

//setTimeout(函数名称,时间); 延时定时器

//clearTimeout( 定时器的返回值 ); 停止定时器

 

/*var timer=null;

timer=setTimeout(function(){

console.log(123456);

},3000);

 

document.οnclick=function(){//停止定时器

clearTimeout(timer);

}*/

</script>

  1. 广告弹出框自动关闭

<div id="box">

<span>X</span>

<span>离广告结束还剩<strong>5</strong>秒</span>

</div>

<script type="text/javascript">

var aSpan=document.getElementsByTagName('span');//是个数组

var oBox=document.getElementById('box');

var aStrong=document.getElementsByTagName('strong');

/*aSpan[0].οnclick=function(){

oBox.style.display='none';

}*/

 

//自动消失

/*setTimeout(function(){

oBox.style.display='none';

},3000);*/

 

 

//倒计时的消失

 

var timer=null;

var num=aStrong[0].innerHTML;

timer=setInterval(function(){

num--;

if(num==0){

oBox.style.display='none';

clearInterval(timer);

}

aStrong[0].innerHTML=num;

},1000);

 

</script>

  1. DOM

<body>

 

<!--

cTable.style.border="1px solid red"; (定义在<style></style>中的)

cTable.border="1px";(定义在html中,如<table border=""></table>)

 

<div class="box" id="div1">123456</div>

<p class="box" id="p1">123456</p>

<a href="http://www.baidu.com">mylink1</a>

<a href="http://www.baidu.com">mylink2</a>

<div class="header">

<a href="http://www.baidu.com">mylink3</a>

</div>

<div class="nav">

<p class="box">88888888888</p>

<p class="box">99999999999</p>

</div>-->

 

<script type="text/javascript">

//标签元素 、标签元素的属性、 标签元素里面的内容<p class="box">88888888888</p>

//一.对document下面的元素进行增,删,改 ,查

//1.获取元素对象--查找

//第一种方法--通过id名获取元素--最快最优。

//var oBox=document.getElementById('div1');

//alert(oBox);//[object HTMLDivElement]

 

//var oP=document.getElementById('p1');

//alert(oP);//[object HTMLParagraphElement]

 

//第二种方法--通过标签名获取,返回一个类数组

//var aA=document.getElementsByTagName('a');

//alert(aA.length);//2

//alert(aA[0]);//http://www.baidu.com/   特殊(目标点就是元素对象)

//alert(aA[0].innerHTML);//mylink1

 

 

//第三种方法--通过选择器的方式获取元素对象,类似于css选择器。

//var oP=document.querySelector('.nav p');//获取一个,如果指向有多个取第一个

//alert(oP.innerHTML);

/*var aP=document.querySelectorAll('.nav p');//类数组,获取多个元素

alert(aP.length);

alert(aP[1].innerHTML);*/

 

 

//className:js下面获取选择器的类名,千万不能使用class(js里面具有特殊用途)

 

 

//2.创建元素--增

//document.createElement('元素的名称'):文档上创建一个元素节点

//var cDiv=document.createElement('div');//创建一个div元素

//alert(cDiv);//[object HTMLDivElement]

//cDiv.innerHTML='我是被创建出来的';

//box.appendChild(node) :把node元素节点插入到box父元素的内部最后的位置

//document.body.appendChild(cDiv);//追加一般在body里而非html开始追加

 

for(var i=1;i<=10;i++){//DOM创建

var cDiv=document.createElement('div');

cDiv.innerHTML=i;

document.body.appendChild(cDiv);

}

 

/*var str='';

for(var i=11;i<=20;i++){//字符串拼接--比上面性能好使用概率大

str+='<div>'+i+'</div>';

}

document.body.innerHTML+=str;*/

 

//创建表格,删除表格

var cTable=document.createElement('table');

cTable.style.border='1px solid red';

for(var i=1;i<=9;i++){

var cTr=document.createElement('tr');

for(var j=1;j<=9;j++){

var cTd=document.createElement('td');

cTd.style.padding='15px 30px';

cTd.style.border='1px solid red';

//如果是最后一个td,添加删除按钮。

if(j==9){

var cButton=document.createElement('button');

cButton.innerHTML='删除'+i;

cTd.appendChild(cButton);

}else{

cTd.innerHTML=i*1111111;

}

 

cTr.appendChild(cTd);

}

cTable.appendChild(cTr);

}

document.body.appendChild(cTable);

 

 

//函数里面有一个特殊的对象--this

//this总的指向:指向函数的调用者,谁调用函数,this指向谁

//事件处理函数里面的this指向当前操作的元素。

 

var aButton=document.querySelectorAll('table  button');

for(var i=0;i<aButton.length;i++){

aButton[i].onclick=function(){//给多个按钮同时添加事件。

//alert(this.innerHTML);//输出当前点击按钮的botton内容。

//parentNode属性:获取父节点

/*alert(this.parentNode);//td

alert(this.parentNode.parentNode);//tr

alert(this.parentNode.parentNode.parentNode);//table

alert(this.parentNode.parentNode.parentNode.parentNode);//body

alert(this.parentNode.parentNode.parentNode.parentNode.parentNode);//html

alert(this.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode);//document

alert(this.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode);*///null

 

//3.删除元素

//box.removeChild(node):删除box内部的子节点(node)(子子节点也会删除)

//window.confirm(提示文字):弹出选择框,确定--true   取消--false;

if(window.confirm('你确定要删除吗?')){

this.parentNode.parentNode.parentNode.removeChild(this.parentNode.parentNode);

}

 

}

}

</script>

  1. 微博发布

<body>

<textarea name="" id="" cols="50" rows="10"></textarea><br />

<button>发布微博</button>

<ul></ul>

<script type="text/javascript">

//4.box.insertBefore(newNode, existNode):在box内,把newNode节点插入到exsitNode的前面

var oButton=document.querySelector('button');

var oT=document.querySelector('textarea');

var oUl=document.querySelector('ul');

oT.focus();//表单获取焦点

 

//alert(oUl.children.length);//获取元素对象的子元素,返回一个类数组。

 

 

oButton.onclick=function(){

if(oT.value!=''){

var cLi=document.createElement('li');

cLi.innerHTML=oT.value;

 

//childern属性:获取元素对象的子元素,返回一个类数组

//oUl.children[0]  第一个子元素

//oUl.children.length  子元素的长度。

if(oUl.children.length<1){

oUl.appendChild(cLi);

}else{

oUl.insertBefore(cLi, oUl.children[0]);

}

 

 

 

 

oT.value='';//清空文本域的内容

}else{

alert('请输入内容');

}

oT.focus();

}

 

</script>

  1. 克隆

<body>

<div class="box"><strong>被克隆的元素</strong></div>

<script type="text/javascript">

//obj.cloneNode():克隆(复制)obj节点,可以传一个布尔值为参数,如果参数为true,连同obj子元素一起克隆。

/*var oBox=document.querySelector('.box');

var cloneBox=oBox.cloneNode(true);//克隆div元素

document.body.appendChild(cloneBox);*/

 

 

//obj.replaceChild(新添加的节点 , 被替换的节点):替换子节点

/*var oBox=document.querySelector('.box');

var cP=document.createElement('p');

cP.className='box';

cP.innerHTML=oBox.innerHTML;

document.body.replaceChild(cP,oBox);*/

 

 

</script>

</body>

  1. Html

<ul>

<li class="site-nav-menu site-nav-seller site-nav-multi-menu J_MultiMenu" id="J_SiteNavSeller" data-name="seller" data-spm="1997525073" aaa='bbb'></li>

</ul>

 

<script type="text/javascript">

//1.html属性操作:默认的属性(标签自带的属性)和自定义的属性。

 

//2.默认的属性的操作

//var oLi=document.querySelector('li');//元素对象。

//读--点操作符和中括号

//alert(oLi.id);

//alert(oLi['id']);//J_SiteNavSeller

//alert(oLi.className);//class被js占用。

//alert(oLi.aaa);//undefined 自定义无法通过点操作符获取

 

//读--getAttribute()

//alert(oLi.getAttribute('id'));//J_SiteNavSeller

//alert(oLi.getAttribute('class'));//ok

 

//写

//oLi.id='hehe';

//oLi['id']='abc'

 

 

//3.自定义的属性

//var oLi=document.querySelector('li');//元素对象。

//js代码添加自定义属性。

//oLi.abc='def';//自定义属性,IE8可以查看自定义属性。

//alert(oLi.abc);

//手动添加自定义属性。

//setAttribute():添加自定义的属性

//oLi.setAttribute('xxx','yyyy');

//alert(oLi.xxx);//undefined

//alert(oLi.getAttribute('data-name'));

 

 

</script>

10.<div class="box"><strong>被克隆的元素</strong></div>

<script type="text/javascript">

var oBox=document.querySelector('.box');

//可读写

//console.log(oBox.innerHTML);//<strong>被克隆的元素</strong>

//console.log(oBox.outerHTML);//<div class="box"><strong>被克隆的元素</strong></div>

//console.log(oBox.innerText);//被克隆的元素

 

//oBox.outerHTML='被克隆的元素';

 

</script>

11. <div class="box" id="div1">

<ul>

<li>1111111111</li>

<li>222222222</li>

<li>1111111111</li>

<li>1111111111</li>

<li>1111111111</li>

</ul>

</div>

 

<script type="text/javascript">

var oBox=document.querySelector('.box');

//标签:元素,节点。

//元素节点

/*alert(oBox.nodeType);//1

alert(oBox.nodeName);//DIV

alert(oBox.nodeValue);//null*/

//属性节点

//console.log(oBox.attributes);//obj 属性节点集合,返回类数组。

//alert(oBox.attributes[0].nodeType);//2

//alert(oBox.attributes[0].nodeName);//class

//alert(oBox.attributes[0].nodeValue);//box

 

//文本节点

//children:子节点的集合,返回类数组,之前的属性。

//childNode:子节点的集合,返回类数组,新的属性。

 

//var oUl=document.querySelector('.box ul');

/*console.log(oUl.children.length);//5

console.log(oUl.childNodes.length);//11*/

//alert(oUl.childNodes[0].nodeType);//3

//alert(oUl.childNodes[0].nodeName);//#text

//alert(oUl.childNodes[0].nodeValue);//

//alert(oUl.childNodes[3].childNodes[0].nodeValue);

 

 

 

 

</script>

</body>

12.<body>

<div class="box"></div>

<script type="text/javascript">

var oBox=document.querySelector('.box');

//1.通过属性词获取元素的css属性--没有单位

//offsetWidth,offsetHeight:获取盒模型尺寸。width+padding+border

//console.log(oBox.offsetWidth);//220

//offsetLeft,offsetTop:获取盒子绝对位置(没有定位,相对可视区。有点位,相对于父元素).

//console.log(oBox.offsetLeft);//离可视区的偏移位置

//offsetParent:获取定位父级。

//alert(oBox.offsetParent);//[object HTMLBodyElement]

 

 

 

 

</script>

</body>

13.<body>

<ul>

 

</ul>

<script>

console.time('ok');

var oUl=document.querySelector('ul');

for(var i=1;i<=10000;i++){

var cLi=document.createElement('li');

cLi.innerHTML=i;

oUl.appendChild(cLi);

}

console.timeEnd('ok');

</script>

</body>

14. <script>

console.time('ok');

var oUl=document.querySelector('ul');

var fragment=document.createDocumentFragment();//新建碎片

for(var i=1;i<=10000;i++){

var cLi=document.createElement('li');

cLi.innerHTML=i;

fragment.appendChild(cLi);//先放到碎片中

}

oUl.appendChild(fragment);//一次性追加

console.timeEnd('ok');

</script>

15.<body>

<ul>

 

</ul>

<script>

console.time('ok');

var oUl=document.querySelector('ul');

var str='';

for(var i=1;i<=10000;i++){

str+='<li>'+i+'</li>';

}

oUl.innerHTML=str;

console.timeEnd('ok');

</script>

</body>

16.<div class="box">123</div>

<script type="text/javascript">

var oBox=document.querySelector('.box');

//读取css属性值

//1.js提供的四个属性:offsetWidth......

//2.getComputedStyle/currentStyle

//alert(oBox.style.width);//无法获取css的属性值,可以读取行间样式

 

//写入css的属性

//1.elementobj.style.属性名=值;

//注意:font-size==>  fontSize   中杠在属性设置时写成驼峰命名的形式。

//注意单位。

//oBox.style.backgroundColor='red';

//oBox.style.fontSize='100px';

//oBox.style['font-size']='500px';

 

/*oBox.style.width='200px';

oBox.style.height='200px';

oBox.style.backgroundColor='orange';

oBox.style.position='absolute';

oBox.style.left='200px';

oBox.style.top='200px';*/

 

//2.利用cssText属性--将css代码以字符串的形式赋值。

oBox.style.cssText='width:200px;height:200px;background: red; position: absolute;left:200px;top:200px;';

 

 

 

</script>

17.<body>

<div class="tab">

<div class="title">

<!--<a href="#" class="active" x=0>JavaScript</a>

<a href="#" x=1>html</a>

<a href="#" x=2>css</a>-->

<a href="#" class="active">JavaScript</a>

<a href="#">html</a>

<a href="#">css</a>

</div>

<div class="content">

<ul style="display: block;">

<li>javascript</li>

<li>javascript</li>

<li>javascript</li>

<li>javascript</li>

<li>javascript</li>

</ul>

<ul>

<li>html</li>

<li>html</li>

<li>html</li>

<li>html</li>

<li>html</li>

</ul>

<ul>

<li>css</li>

<li>css</li>

<li>css</li>

<li>css</li>

<li>css</li>

</ul>

</div>

</div>

<script type="text/javascript">

 

//tab切换:一一匹配,让按钮和跟按钮对应的内容进行一一匹配。

 

//1.获取元素

var aA=document.querySelectorAll('.tab .title a');

var aUl=document.querySelectorAll('.tab .content ul');

 

//2.三个a添加点击事件。

//如果循环里面有事件,事件里面的i是循环的最后一次值。

for(var i=0;i<aA.length;i++){

//alert(i); //0,1,2

aA[i].onclick=function(){

//i:循环的最后一次的值,循环结束的值。

//4.点击当前的a元素之前,清空所有的类名。

for(var j=0;j<aA.length;j++){

aA[j].className='';

aUl[j].style.display='none';

}

//3.当前点击的a添加className

this.className='active';

 

//5.让和a想匹配的内容显示。

aUl[this.getAttribute('x')].style.display='block';

//alert(this.getAttribute('x'));  //当前点击的a的索引。

}

}

 

 

for(var i=0;i<aA.length;i++){

aA[i].index=i;//自定义属性(自定义索引)

aA[i].onclick=function(){

for(var j=0;j<aA.length;j++){

aA[j].className='';

aUl[j].style.display='none';

}

this.className='active';

aUl[this.index].style.display='block';

};

}

</script>

</body>

18.<body>

<div id="box">

<ul>

<li style="display: block;"><img src="img/1.jpg"/></li>

<li><img src="img/2.jpg"/></li>

<li><img src="img/3.jpg"/></li>

<li><img src="img/4.jpg"/></li>

<li><img src="img/5.jpg"/></li>

<li><img src="img/6.jpg"/></li>

<li><img src="img/7.jpg"/></li>

<li><img src="img/8.jpg"/></li>

</ul>

<ol>

<li class="active">1</li>

<li>2</li>

<li>3</li>

<li>4</li>

<li>5</li>

<li>6</li>

<li>7</li>

<li>8</li>

</ol>

<a href="javascript:;" id="left"><</a>

<a href="javascript:;" id="right">></a>

</div>

<script type="text/javascript">

var box=document.querySelector('#box');

var picLi=document.querySelectorAll('#box ul li');

var btnLi=document.querySelectorAll('#box ol li');

var left=document.querySelector('#left');

var right=document.querySelector('#right');

var num=0;

//小圆圈添加鼠标经过事件

for(var i=0;i<btnLi.length;i++){

btnLi[i].index=i;

btnLi[i].onmouseover=function(){

num=this.index;//当前操作的元素的索引。

tabSwitch()

};

}

function tabSwitch(){

for(var j=0;j<btnLi.length;j++){

btnLi[j].className='';

picLi[j].style.display='none';

}

btnLi[num].className='active';

picLi[num].style.display='block';

}

right.onclick=function(){

num++;

if(num>7){

num=0;

}

tabSwitch();

}

 

left.onclick=function(){

num--;

if(num<0){

num=7;

}

tabSwitch();

}

 

//自动轮播

var timer=setInterval(function(){

right.onclick();//自动执行右键

},2000);

 

box.onmouseover=function(){

clearInterval(timer);

}

 

box.onmouseout=function(){

timer=setInterval(function(){

right.onclick();//自动执行右键

},2000);

}

</script>

</body>

<body>

<div id="box">

<ul>

<li style="opacity: 1;"><img src="img/1.jpg"/></li>

<li><img src="img/2.jpg"/></li>

<li><img src="img/3.jpg"/></li>

<li><img src="img/4.jpg"/></li>

<li><img src="img/5.jpg"/></li>

<li><img src="img/6.jpg"/></li>

<li><img src="img/7.jpg"/></li>

<li><img src="img/8.jpg"/></li>

</ul>

<ol>

<li class="active">1</li>

<li>2</li>

<li>3</li>

<li>4</li>

<li>5</li>

<li>6</li>

<li>7</li>

<li>8</li>

</ol>

<a href="javascript:;" id="left"><</a>

<a href="javascript:;" id="right">></a>

</div>

<script type="text/javascript">

var box=document.querySelector('#box');

var picLi=document.querySelectorAll('#box ul li');

var btnLi=document.querySelectorAll('#box ol li');

var left=document.querySelector('#left');

var right=document.querySelector('#right');

var num=0;

//小圆圈添加鼠标经过事件

for(var i=0;i<btnLi.length;i++){

btnLi[i].index=i;

btnLi[i].onmouseover=function(){

num=this.index;//当前操作的元素的索引。

tabSwitch()

};

}

function tabSwitch(){

for(var j=0;j<btnLi.length;j++){

btnLi[j].className='';

picLi[j].style.opacity=0;

}

btnLi[num].className='active';

picLi[num].style.opacity=1;

}

right.onclick=function(){

num++;

if(num>7){

num=0;

}

tabSwitch();

}

 

left.onclick=function(){

num--;

if(num<0){

num=7;

}

tabSwitch();

}

 

//自动轮播

var timer=setInterval(function(){

right.onclick();//自动执行右键

},2000);

 

box.onmouseover=function(){

clearInterval(timer);

}

 

box.onmouseout=function(){

timer=setInterval(function(){

right.onclick();//自动执行右键

},2000);

}

</script>

20.<body style="height: 3000px;">

<!--<script type="text/javascript">

//1.onload事件:页面内容加载完成(DOM结构,图片.....)之后,再触发里面的代码

//html任意地方引入js.因为内容加载完成后触发。

// window.οnlοad=function(){

// var oBox=document.getElementById('box');

// alert(oBox);

//}

// window.οnlοad=function(){//页面内容加载完成之后,再触发里面的代码

// //var oBox=document.getElementById('box');

// //alert(oBox);

// }

</script>-->

<div id="box">123456</div>

<script type="text/javascript">

document.onclick=function(){window.scrollTo(0,0);}

 

 

//var oBox=document.getElementById('box');

//alert(oBox);//[object HTMLDivElement]

      //2.onscroll事件:拖动浏览器的滚动条触发此事件。

//此事件的触发频率很高。拖到滚动条一次,会产生多次事件。

/*window.οnscrοll=function(){

console.log('hello,滚动条');

}*/

//3.onresize事件:浏览器窗口缩放所触发的事件。也有触发频率,但频率没有onscroll多。

/*window.οnresize=function(){

console.log('hello,浏览器的窗口');

}*/

</script>

</body>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

QiuShuiFuPing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值