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 相关文章推荐
JQuery+JS实现仿百度搜索结果中关键字变色效果
Aug 02 Javascript
JavaScript window.document的属性、方法和事件小结
Oct 24 Javascript
javascript实现颜色渐变的方法
Oct 30 Javascript
JS与C#编码解码
Dec 03 Javascript
JS实现不规则TAB选项卡效果代码
Sep 16 Javascript
javascript正则表达式定义(语法)总结
Jan 08 Javascript
微信小程序  action-sheet详解及实例代码
Nov 09 Javascript
jQuery简单获取DIV和A标签元素位置的方法
Feb 07 Javascript
Vue2.0基于vue-cli+webpack Vuex的用法(实例讲解)
Sep 15 Javascript
vue2中使用sass并配置全局的sass样式变量的方法
Sep 04 Javascript
实现vuex与组件data之间的数据同步更新方式
Nov 12 Javascript
JS实现贪吃蛇游戏
Nov 15 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
php分页示例代码
2007/03/19 PHP
提高PHP编程效率 引入缓存机制提升性能
2010/02/15 PHP
php判断数组中是否存在指定键(key)的方法
2015/03/17 PHP
PHP贪婪算法解决0-1背包问题实例分析
2015/03/23 PHP
PHP利用百度ai实现文本和图片审核
2019/05/08 PHP
php面向对象程序设计中self与static的区别分析
2019/05/21 PHP
js当一个变量为函数时 应该注意的一点细节小结
2011/12/29 Javascript
JS中表单的使用小结
2014/01/11 Javascript
JavaScript实现存储HTML字符串示例
2014/04/21 Javascript
jQuery计算文本框字数及限制文本框字数的方法
2016/03/01 Javascript
js实现select二级联动下拉菜单
2020/04/17 Javascript
jQuery实现简洁的轮播图效果实例
2016/09/07 Javascript
javascript基于原型链的继承及call和apply函数用法分析
2016/12/15 Javascript
Vue.js仿Metronic高级表格(一)静态设计
2017/04/17 Javascript
angularjs定时任务的设置与清除示例
2017/06/02 Javascript
angular实现spa单页面应用实例
2017/07/10 Javascript
JavaScript严格模式下关于this的几种指向详解
2017/07/12 Javascript
基于react组件之间的参数传递(详解)
2017/09/05 Javascript
推荐VSCode 上特别好用的 Vue 插件之vetur
2017/09/14 Javascript
React中常见的动画实现的几种方式
2018/01/10 Javascript
Angular 数据请求的实现方法
2018/05/07 Javascript
laydate时间日历插件使用方法详解
2018/11/14 Javascript
vue全局使用axios的方法实例详解
2018/11/22 Javascript
浅谈Vue3.0之前你必须知道的TypeScript实战技巧
2019/09/11 Javascript
Python中优化NumPy包使用性能的教程
2015/04/23 Python
Python实现约瑟夫环问题的方法
2016/05/03 Python
Python使用Turtle模块绘制五星红旗代码示例
2017/12/11 Python
利用Python实现自动扫雷小脚本
2020/12/17 Python
使用CSS3的appearance属性改变任何元素的浏览器默认风格
2012/12/24 HTML / CSS
纯CSS3编写的的精美动画进度条(无flash/无图像/无脚本/附源码)
2013/01/07 HTML / CSS
HTML5 Canvas实现放大镜效果示例
2020/03/25 HTML / CSS
Python面试题集
2012/03/08 面试题
物流仓管员岗位职责
2013/12/04 职场文书
仓库门卫岗位职责
2013/12/22 职场文书
2014大四本科生自我鉴定总结
2014/10/04 职场文书
基于JavaScript实现年月日三级联动
2021/06/22 Javascript