<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
*{margin: 0;padding: 0}
#wrap{width: 600px; margin:20px auto; font-size: 14px;border: 1px solid #ccc;}
#tabs{width: 100%; height: 40px; line-height: 40px;border-bottom: 1px solid #ccc;}
#tabs a{display: block;float: left; padding: 0 20px; text-decoration: none;}
#tabs a.tabactive{background: brown; color: #fff;}
#content{width: 100%; height: 400px;}
#content p{height: 400px; display: none}
#content p.conactive{display: block;}
</style>
</head>
<body>
<div id="wrap">
<div id="tabs">
<a class="tabactive" href="javascript:;">新闻</a>
<a href="javascript:;">国内</a>
<a href="javascript:;">国外</a>
</div>
<div id="content">
<p class="conactive">新闻</p>
<p>国内</p>
<p>国外</p>
</div>
</div>
<script>
window.onload = function () {
//保存this
let that = null;
//声明构造函数
class Tabs {
//构造器
constructor(id){
this.wrap = document.getElementById(id);
this.abtns = this.wrap.getElementsByTagName('a');
this.pcon = this.wrap.getElementsByTagName('p');
this.num = 0;
this.timer = null;
this.init()
}
//初始化
init(){
//保存this对象
that = this;
//执行自动播放功能
this.autoplay();
//执行点击切换功能
this.tab();
//鼠标移入时取消定时器
this.wrap.onmouseover = function(){
clearInterval(that.timer)
}
//鼠标离开时,开启自动轮播功能
this.wrap.onmouseleave = function(){
that.autoplay();
}
}
//点击切换
tab(){
for(let i=0;i<this.abtns.length;i++){
this.abtns[i].index = i;
this.abtns[i].onclick = function(){
//注意:这个函数里的this指向了abtn元素,想要使用实例中的this就要用之前保存的that来代替
clearInterval(that.timer)
//把点击元素的index赋值给实例上的num,以保证下次自动轮播时起始点正确
that.num = this.index
that.qiehuan()
}
}
}
//自动播放
autoplay(){
this.timer = setInterval(function(){
//注意:这个函数里的this指向了window,想要使用实例中的this就要用之前保存的that来代替
that.num++;
that.num %= that.abtns.length;
that.qiehuan()
},2000)
}
//切换效果
qiehuan(){
for(let i=0;i<that.abtns.length;i++){
that.abtns[i].className = ""
that.pcon[i].className = ""
}
that.abtns[that.num].className = "tabactive"
that.pcon[that.num].className = "conactive"
}
}
//生成实例
new Tabs('wrap')
}
</script>
</body>
</html>

es6 面向对象选项卡(自动轮播功能)的更多相关文章

  1. 原生js面向对象编程-选项卡(自动轮播)

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  2. Javascript专题(三)c.各种轮播--上下滚动轮播(面向对象版本)

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. 原生JS面向对象思想封装轮播图组件

    原生JS面向对象思想封装轮播图组件 在前端页面开发过程中,页面中的轮播图特效很常见,因此我就想封装一个自己的原生JS的轮播图组件.有了这个需求就开始着手准备了,代码当然是以简洁为目标,轮播图的各个功能 ...

  4. jQuery实现选项联动轮播

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. jQuery仿淘宝图片无缝滚动轮播

    自己前天,也就是1月8日的时候早上自己写了一个图片滚动轮播(基于jQuery). 其实几个月以前就有朋友问过我怎么做出和淘宝上面一样的滚动轮播,一直到现在也没有真正的写好,这次写得差不多了. 但是还有 ...

  6. 原生JS编写兼容IE6,7,8浏览器无缝自动轮播(带按钮切换)

    项目要求页面兼容IE6,7,8等浏览器,我们可能会遇到这个轮播效果,轮播板块要求:无限循环.自动轮播和手动切换功能,每一次滚动一小格,网上有很多这类插件,例如:swiper等! 但是很多都是不兼容IE ...

  7. js实现轮播功能

    先上图,效果大概就是这样子: 实现的功能: 1.鼠标经过第几个正方形,就要展示第几张图片,并且正方形的颜色也发生变化 2.图片自动轮播,(这需要一个定时器) 3.鼠标经过图片,图片停止自动播放(这需要 ...

  8. JS实现自动轮播图效果(js案例)

    现在很多网站都有轮播图,这篇文章主要为大家详细介绍了js实现轮播图的完整代码及原理,需要的小伙伴可以参考一下. 1.轮播图主要功能: 1.  图片自动轮播(主图切换同时下面导航图片也会跟着变化) 2. ...

  9. ES6面向对象 动态添加标签页

    HTML <!DOCTYPE html> <html lang="en" xmlns="http://www.w3.org/1999/xhtml&quo ...

随机推荐

  1. 基于BERT预训练的中文命名实体识别TensorFlow实现

    BERT-BiLSMT-CRF-NERTensorflow solution of NER task Using BiLSTM-CRF model with Google BERT Fine-tuni ...

  2. 在vue项目中如何添加eslint

    随着vue的越做越好,更多的开发者选择使用vue,本篇记录如何在vue项目中添加eslint. 首先第一种就是在vue项目创建初始时就选择了创建,随着初始化一起代入到了项目当中,那么要是一开始觉得es ...

  3. 给websocket加入心跳包防止自动断开连接

    var userId=$("#userId").val(); var lockReconnect = false; //避免ws重复连接 var ws = null; // 判断当 ...

  4. 2018-8-10-win10-uwp-win2d-使用-Path-绘制界面

    title author date CreateTime categories win10 uwp win2d 使用 Path 绘制界面 lindexi 2018-08-10 19:17:19 +08 ...

  5. vue-cli 初始化 -4058 error

    如上图 原因:安装初始化时没有管理员权限 解决:进入目录删除node_modules,进入命令提示符以管理员身份重新运行: npm install

  6. MD5登陆密码的生成

    package com.cinc.ecmp.userpermission.utils; import java.security.MessageDigest;import java.security. ...

  7. XSS攻击及防范

    1.什么是XSS攻击 跨站脚本攻击(Cross Site Scripting),攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到 ...

  8. k8s故障总结

    1.run pod的时候提示"Back-off pulling image \"registry.access.redhat.com/rhel7/pod-infrastructur ...

  9. FCKeditor使用

    fckeditor - (1)资料介绍与安装 fckeditor介绍  FCKeditor是一个专门使用在网页上属于开放源代码的所见即所得文字编辑器.  1.fckeditor官网:http://ww ...

  10. easyUI demo2

    图片:               代码: jsp <%@ page language="java" import="java.util.*" pageE ...