js原生之焦点图转换加定时器实例


Posted in Javascript onDecember 12, 2016

在jQuery之焦点图转换-左右的基础上,将jQuery代码改成js原生,并添加定时器(setInterval()和clearInterval())

<!doctype html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>焦点图转换--原生和定时器</title>
 <link rel="stylesheet" href="css/reset.css">
 <style type="text/css">
  .pic-show{width: 480px;overflow: hidden;}
  #pic{width: 1920px;height: 320px;position: relative;}
  #pic img{display: block;float: left;}
  .pic-show>img{display: block;cursor: pointer;opacity: 0.8; position: absolute;top: 142px;left: 30px;}
  .pic-show>img:last-child{display: block; position: absolute;left: 414px; } 
  ul{width: 120px;height: 18px;position: absolute;top: 280px;left: 185px;}
  li{float: left;width: 20px;height: 18px;margin-left: 5px;}
  a{display: block;width: 20px;height: 18px;text-decoration: none;border: 1px solid #ccc;border-radius: 50%;background-color: #ccc;opacity: 0.6;}
  a:hover{background-color: #094a99;}
  .aCss{background-color: #094a99;}
  p{width: 480px;text-align: center;}
 </style>
</head>
<body>
 <div class="pic-show">
  <div id="pic">
   <img src="images/1.jpg" alt="">
   <img src="images/2.jpg" alt="">
   <img src="images/3.jpg" alt="">
   <img src="images/4.jpg" alt="">
  </div>
  <img id="prev" src="images/slider-prev.png" alt="">
  <img id="next" src="images/slider-next.png" alt="">
 </div>
 <ul id="list">
  <li><a href="#" title="日落"></a></li>
  <li><a href="#" title="钢琴"></a></li>
  <li><a href="#" title="大海"></a></li>
  <li><a href="#" title="秋色"></a></li>
 </ul>
 <p id="p">这是一段测试文字</p>
 <script src="js/jquery-3.0.0.js"></script>
 <script type="text/javascript">
  var num=0;
  function G(id){
   return document.getElementById(id)
  }
  var pic = G('pic')
  var next = G('next')
  var prev = G('prev')
  var p = G('p')
  var list = G('list')
  var arr = G('list').getElementsByTagName('a')


 //点击next
  next.onclick=function(){
   if(num<3){
    num=num+1; 
   }
   else{
    num=0;
   }
   console.log(num);
   var mlNum=num * -480+'px';
   pic.style.marginLeft=mlNum;
   for(var j=0;j<arr.length;j++){
    arr[j].style.backgroundColor='#ccc';
   }
   arr[num].style.backgroundColor="#094a99";
   event.preventDefault();

   var txt=arr[num].getAttribute("title");
   console.log(txt);
   p.textContent=txt;
  }


//点击prev
  prev.onclick=function(){
   if(num>0){
    num=num-1; 
   }
   else{
    num=3;
   }
   console.log(num);
   var mlNum2=num * -480+'px';
   pic.style.marginLeft=mlNum2;
   for(var j=0;j<arr.length;j++){
    arr[j].style.backgroundColor='#ccc';
   }
   arr[num].style.backgroundColor="#094a99";
   event.preventDefault();
   var txt=arr[num].getAttribute("title");
   console.log(txt);
   p.textContent=txt;
  }
  for(var i=0;i<arr.length;i++){
   arr[i].index=i;//创建索引值
   arr[i].onclick=function(event){  num=this.index;        
    var mlNum3=num * -480+'px';       pic.style.marginLeft=mlNum3;    
    for(var j=0;j<arr.length;j++){
     arr[j].style.backgroundColor='#ccc';
    }
    this.style.backgroundColor='#094a99';
    event.preventDefault();
    var txt=this.getAttribute("title");
    p.textContent=txt;
   }
  }


//函数封装
  function lunbo(){
   if(num<3){
    num=num+1; 
   }
   else{
    num=0;
   }
   console.log(num);
   var mlNum=num * -480+'px';
   pic.style.marginLeft=mlNum;
   for(var j=0;j<arr.length;j++){
    arr[j].style.backgroundColor='#ccc';
   }
   arr[num].style.backgroundColor="#094a99";
   event.preventDefault();
   var txt=arr[num].getAttribute("title");
   console.log(txt);
   p.textContent=txt;
  }


//通过定时器调用封装好的函数
  var stop=setInterval(lunbo,1500);


//鼠标放上和离开时定时器的状态
  pic.onmouseenter=function(){
   clearInterval(stop)
  }
  pic.onmouseleave=function(){
   stop=setInterval(lunbo,1500)
  }
 </script>
</body>
</html>

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
基于json的jquery地区联动效果代码
Jul 06 Javascript
js新闻滚动 js如何实现新闻滚动效果
Jan 07 Javascript
jQuery表格插件ParamQuery简单使用方法示例
Dec 05 Javascript
js使下拉列表框可编辑不止是选择
Dec 12 Javascript
Jquery插件编写简明教程
Mar 25 Javascript
js加入收藏夹代码(兼容ie/ff/op)
May 16 Javascript
JQuery中使文本框获得焦点的方法实例分析
Feb 28 Javascript
使用 Javascript 实现浏览器推送提醒功能的示例
Nov 03 Javascript
如何解决日期函数new Date()浏览器兼容性问题
Sep 11 Javascript
js实现图片3D轮播效果
Sep 21 Javascript
jquery实现简单每周轮换的日历
Sep 10 jQuery
Ajax异步刷新功能及简单案例
Nov 20 Javascript
IntersectionObserver API 详解篇
Dec 11 #Javascript
想学习javascript JS和jQuery哪个重要 先学哪个
Dec 11 #Javascript
基于javascript实现的购物商城商品倒计时实例
Dec 11 #Javascript
基于jquery实现的鼠标悬停提示案例
Dec 11 #Javascript
jquery滚动条插件(可以自定义)
Dec 11 #Javascript
jquery实现简单的瀑布流布局
Dec 11 #Javascript
js倒计时显示实例
Dec 11 #Javascript
You might like
无线电的诞生过程
2021/03/01 无线电
PHP+MYSQL的文章管理系统(一)
2006/10/09 PHP
部署PHP项目应该注意的几点事项分享
2013/12/20 PHP
PHP去掉json字符串中的反斜杠\及去掉双引号前的反斜杠
2015/09/30 PHP
php中访问修饰符的知识点总结
2019/01/27 PHP
php和C#的yield迭代器实现方法对比分析
2019/07/17 PHP
JavaScript写的一个自定义弹出式对话框代码
2010/01/17 Javascript
自写简单JS判断是否已经弹出页面
2010/10/20 Javascript
Javascript写入txt和读取txt文件示例
2014/02/12 Javascript
提取jquery的ready()方法单独使用示例
2014/03/25 Javascript
JavaScript中遍历对象的property的3种方法介绍
2014/12/30 Javascript
Grunt入门教程(自动任务运行器)
2015/08/06 Javascript
js调用百度地图及调用百度地图的搜索功能
2015/09/07 Javascript
javascript中arguments,callee,caller详解
2016/03/16 Javascript
超全面的JavaScript开发规范(推荐)
2017/01/21 Javascript
javascript 显示全局变量与隐式全局变量的区别
2017/02/09 Javascript
详解Vue2 无限级分类(添加,删除,修改)
2017/03/07 Javascript
使用JS在浏览器中判断当前网络连接状态的几种方法
2017/05/05 Javascript
vue 里面使用axios 和封装的示例代码
2017/09/01 Javascript
利用vue和element-ui设置表格内容分页的实例
2018/03/02 Javascript
三分钟学会用ES7中的Async/Await进行异步编程
2018/06/14 Javascript
vue-cli3全面配置详解
2018/11/14 Javascript
Vue-cli3生成的Vue项目加载Mxgraph方法示例
2020/05/31 Javascript
vue 通过绑定事件获取当前行的id操作
2020/07/27 Javascript
VSCode插件安装完成后的配置(常用配置)
2020/08/24 Javascript
解决Vue watch里调用方法的坑
2020/11/07 Javascript
uniapp微信小程序:key失效的解决方法
2021/01/20 Javascript
python中常见错误及解决方法
2020/06/21 Python
什么是Smart Navigation?
2016/07/03 面试题
什么是会话Bean
2015/05/14 面试题
重写子类方法时,抛出异常的书写注意事项
2015/10/17 面试题
财务会计人员求职的自我评价
2014/01/13 职场文书
2014年客房服务员工作总结
2014/11/18 职场文书
总经理助理岗位职责
2015/01/31 职场文书
麦田里的守望者读书笔记
2015/06/30 职场文书
Redis 限流器
2022/05/15 Redis