切换图片

						 **

关于onmouseover事件与拼接+i+显示图片分析

**
达到当鼠标移到小图片的时候,大图片将切换成小图片的效果,如下图所示:

在这里插入图片描述
在这里插入图片描述

对应的代码如下所示:

<!DOCTYPE html>
<html>

 <head>
  <meta charset="utf-8">
  <title>onmouseover事件与拼接显示分析</title>
  <style type="text/css">
   *{
      margin:0px;
      padding: 0px;
     }
      #smallImg li{
             list-style: none;
               float:left;
               margin-left: 5px;
                    }
  </style>
  <script type="text/javascript">
   window.onload = function(){
       var lists = document.getElementsByTagName("img"); 
       for (var i=0;i<lists.length;i++) {       
          lists[i].onmouseover = function(){        
            document.getElementById("bigImg1").src=this.src;
//        document.getElementById("bigImg1").src="images/top"+(i+1)+".jpg";
          debugger
    }
    }  
    }
  </script>
 </head>

 <body>
  <div id="bigImg">
   <img src="img/Images/top1.jpg" id="bigImg1">
  </div>
  <div id="smallImg">
   <ul>
    <li><img src="img/Images/top2.jpg" width ="52"></li>
    <li><img src="img/Images/top3.jpg" width="52"></li>
    <li><img src="img/Images/top4.jpg" width="52"></li>
    <li><img src="img/Images/top5.jpg" width="52"></li>
    <li><img src="img/Images/top6.jpg" width="52"></li>
   </ul>
  </div>
 </body>

</html>
 本来是没什么疑问的。直接用onmouseover事件+this就可以实现,而我的同学开始确是用的拼接i循环的方法显示 ,听他的讲解我觉得他的思路没什么问题,但是运行的时候实现不了而不给i值直接写数字(2,3,4,5,6)的时候又可以正常显示,我想了下可能差异还是在i上面,实际上相当于每个list[i]的document.getElementById("bigImg1").src都是对应的不同图片,既:

lists[0]: document.getElementById(“bigImg1”).src=“img/Images/top2.jpg”;
lists[1]: document.getElementById(“bigImg1”).src=“img/Images/top3.jpg”;
lists[2]: document.getElementById(“bigImg1”).src=“img/Images/top4.jpg”;
lists[3]: document.getElementById(“bigImg1”).src=“img/Images/top5.jpg”;
lists[4]: document.getElementById(“bigImg1”).src=“img/Images/top6.jpg”;
而this.src,却是每次给的都是同一个值,所以效果不同。当然这是我的理解,欢迎大家阐述不同的观点。

 今天又碰到了图片循环问题,忍不住又研究了一下,还是一样先看显示效果如下图

在这里插入图片描述
在这里插入图片描述
代码如下:

<!DOCTYPE html>
<html>

	<head>
		<meta charset="utf-8">
		<title></title>
		<style type="text/css">
		*{
			margin: 0px;padding: 0px;
		}
		img{
			width: 300px;
			height: 300px;
		}
		li{
			list-style: none;
			border: 1px solid;
			float: left;
			width: 80px;
			margin-left: 20px;
			background-color: pink;
		}
		#pic2{
			clear: both;
		}
		</style>
		
		<script type="text/javascript">
		window.onload=function(){
			var lis=document.getElementsByTagName("li");
//			lis[0].onmouseover=function(){
//		        	var x=this.innerHTML;
//		        		document.getElementById("img1").src ="img/image/flower"+1+".png";
//		        	debugger
//		        	}
//			lis[1].onmouseover=function(){
//		        	var x=this.innerHTML;
//		        		document.getElementById("img1").src ="img/image/flower"+2+".png";
//		        	debugger
//		        	}
//			lis[2].onmouseover=function(){
//		        	var x=this.innerHTML;
//		        		document.getElementById("img1").src ="img/image/flower"+3+".png";
//		        	debugger
//		        	}
//			lis[3].onmouseover=function(){
//		        	var x=this.innerHTML;
//		        		document.getElementById("img1").src ="img/image/flower"+4+".png";
//		        	debugger
//		        	}
		        for(var i=0;i<lis.length;i++){
		        	lis[i].onmouseover=function(){
		        	var x=this.innerHTML;
		        		document.getElementById("img1").src ="img/image/flower"+x+".png";
		        	debugger
		        	}
		        }
		}
		        
				
		</script>
	</head>

	<body>
		<div id="pic">
			<ul>
			<li>1</li>
			<li>2</li>
			<li>3</li>
			<li>4</li>
			</ul>
			<div id="pic2">
			</div>
			<img src="img/image/flower1.png" alt="图片切换" id="img1"/>
			<!--<img src="img/image/flower2.png" alt="图片切换" id="img2"/>
			<img src="img/image/flower3.png" alt="图片切换" id="img3"/>-->
		</div> 		
	</body>
</html>
 但是又有新的收获,之前的想法可能是错的 ,实际上

不能用i进行拼接是由于i值在该事件中显示的是未定义

,所以无法判别,而用 var x=this.innerHTML;却可以实现。控制台查看情况如下图:

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值