zoukankan      html  css  js  c++  java
  • 实例练习——轮播图 & 全选/全不选

    1 实例1:轮播图

    1)实质就是改变图片的src

    2)把图片的路径用数组存起来

    3) “下一张”的实现就是改变数组的下标,用一个变量i控制,每次点击下标加1。“上一张”的实现正好相反。注意“i的变化”与“if判断”与“src改变”的顺序。

    4)自动播放的实现:添加一个定时器,自动调用“下一张”的方法

    5)当鼠标移上时,清除定时器,移出时,再添加定时器

    6)注意整体写法,首先定义全局变量,然后页面加载时调用方法,然后写每一个方法的定义

    2 轮播图添加缩略图控制

    1)给缩略图添加一个自定义属性

    2)循环给缩略图添加点击事件,获取到自定义属性值,赋值给全局变量i,就是大图片数组的下标,就可以改变相应大图片的src了

    3)缩略图可以用js循环出来,不直接写在html中

    html代码:

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>轮播</title>
    <link rel="stylesheet" href="css/common.css"/>
    <script src="js/common.js"></script>
    </head>
    
    <body>
    	<div class="img-wrap" id="wrap">
    		<div class="imgs"><img src="images/1.jpg" id="img_dom"/></div>
    		<p>
    			<button id="prev">上一张</button>
    			<button id="next">下一张</button>
    		</p>
    		
    		<!--<div class="nav">
    			<img src="images/1.jpg" onclick="tab(0)"/>
    			<img src="images/2.jpg" onclick="tab(1)"/>
    			<img src="images/3.jpg" onclick="tab(2)"/>
    		</div>-->
    		
    		<div class="nav"></div>
    	</div>	
    </body>
    </html>
    

    css代码:

    .img-wrap{ 990px;margin: 20px auto 0;text-align: center;overflow: hidden;border: 1px solid #ccc;}
    .imgs img{ 100%;height: 340px;}
    .nav{text-align: center;}
    .nav img{ 200px;margin: 0 10px;cursor: pointer;height: 70px;}
    

    js代码:

    var arr_img=['images/1.jpg','images/2.jpg','images/3.jpg'], //数组存储图片的路径
    	i=0, //数组的下标
    	timer=null, //定时器对象
    	img_dom=null, //大图片
    	img_box=null, //最外面的div
    	t=2000, //自动播放时间,毫秒,数越大越慢
    	nav=[],//缩略图
    	prevBtn=null, //上一张按钮
    	nextBtn=null; //下一张按钮
    
    window.onload=function(){
    	init(); //初始化变量	
    	addimg(); //添加缩略图
    	addEvent(); //添加事件		
    }
    
    //初始化变量
    function init(){
    	img_box=document.getElementsByClassName('img-wrap')[0]; //最外面的div
    	prevBtn=document.getElementById('prev'); //上一张按钮
    	nextBtn=document.getElementById('next'); //下一张按钮
    	img_dom=document.getElementById('img_dom'); //大图片	
    	nav=document.getElementsByClassName('nav')[0].getElementsByTagName('img');	//缩略图
    	timer=setInterval(next,t);	//自动调用下一张	
    }
    
    //添加缩略图
    function addimg(){
    	var str='';
    	var nav_wrap=document.getElementsByClassName('nav')[0];
    	for(var q=0; q<arr_img.length; q++){
    		str+='<img src="'+arr_img[q]+'" data-id="'+q+'"/>'
    	}
    	nav_wrap.innerHTML=str;
    }
    
    //添加事件
    function addEvent(){
    	prevBtn.onclick=prev; //上一张
    	nextBtn.onclick=next; //下一张
    	
    	//鼠标移入清除定时器
    	img_box.onmouseover=function(){
    		clearInterval(timer);
    	}
    	
    	//鼠标移出添加定时器
    	img_box.onmouseout=function(){
    		timer=setInterval(next,t);
    	}
    	
    	//缩略图的事件
    	for(var j=0; j<nav.length; j++){
    		nav[j].onclick=function(){
    			i=+this.getAttribute('data-id');			
    			img_change();
    		}
    	}	
    }
    
    //改变大图src
    function img_change(){
    	img_dom.src=arr_img[i];
    }
    
    //上一张
    function prev(){	 
    	i--;
    	if(i<0){
    		i=arr_img.length-1;
    	}	
    	img_change();
    }
    
    //下一张
    function next(){
    	i++;
    	if(i>=arr_img.length){
    		i=0;
    	}	
    	img_change();
    }
    
    
    //直接点击缩略图,html中已注释
    function tab(num){
    	i=num;
    	img_change();
    }
    

      

     3 实例2:全选/全不选

    1)给全选框添加点击事件,获取他的选中状态,再找到其他复选框(以下都称为子选框),把选中状态设为和全选框一样

    2)注意使用this

    3)反着选:循环给所有子选框添加点击事件,判断选中,只要有一个没被选中,则把全选框的选中状态置为假;全部子选框被选中了,全选框的选中状态置为真

    html代码:

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>全选/全不选</title>
    <script src="js/select.js"></script>
    </head>
    <body>
    	
    <p>
    	<label>
    		<input type="checkbox" id="all"/>全选/全不选
    	</label>
    </p>
    
    <p>
    	<label>
    		<input type="checkbox" class="child"/>选择
    	</label>	
    </p>
    <p>
    	<label>
    		<input type="checkbox" class="child"/>选择
    	</label>	
    </p>
    <p>
    	<label>
    		<input type="checkbox" class="child"/>选择
    	</label>	
    </p>
    <p>
    	<label>
    		<input type="checkbox" class="child"/>选择
    	</label>	
    </p>
    
    </body>
    </html>
    

    js代码:

    var all=null; //全选框
    var child=[]; //子选框
    
    window.onload=function(){
    	init(); //初始化变量
    	all.onclick=select_all; //调用全选方法
    	for(var i=0; i<child.length; i++){ 
    		child[i].onclick=select_child; //给子选框添加点击事件
    	}
    }
    
    //初始化变量
    function init(){
    	all=document.getElementById('all'); //全选框
    	child=document.getElementsByClassName('child'); //子选框	
    }
    
    //全选
    function select_all(){	
    	var selects = this.checked; //全选框的选中状态	
    	for(var i=0; i<child.length; i++){
    		child[i].checked=selects; //子选框的选中状态等于全选框的选中状态
    	}
    }
    
    //子选框
    function select_child(){
    	var flag=1; //定一个用来判断的标识
    	for(var i=0; i<child.length; i++){
    		if(child[i].checked==false){ 
    			flag=0; //如果有一个子选框没有被选中,则标识等于0
    		}
    	}
    	
    	if(flag==0){
    		all.checked=false; //全选框不被选中
    	} else{
    		all.checked=true; //全选框被选中
    	}
    }
    
  • 相关阅读:
    JVM | JVM的核心技术
    性能测试 | 服务器CPU使用率高分析实例
    VIM | vim操作大全
    数据库 | SQL查询&LIMIT的用法
    性能测试 | Linux系统top命令中的io使用率,很多人都误解了它的具体含义
    团队游戏的那些事
    细说内测
    PropertyPlaceHolderConfigurer中的location是不是用错了?
    foreach写失效的问题
    如何优雅的写单元测试?
  • 原文地址:https://www.cnblogs.com/hzhjxx/p/9708017.html
Copyright © 2011-2022 走看看