4、自定义属性、轮播图、下拉菜单

1、自定义属性

任何的html标签都有自己的一个属性,当时那都是它本身的固定属性,而我们在项目中可能会遇到需要给标签添加一些自定义的属性,去判断替换内容或者赋值等等,那么就需要给标签设定一个属性来作为判断标准或者赋值的标准
JS可以为任何HTML元素、添加任意个自定义属性

<html lang="en">
<head>
    <meta charset="UTF-8">
</head>
<body>
    <input type="button" value="按钮1">
    <input type="button" value="按钮2">
    <input type="button" value="按钮3">
    <script type="text/javascript">
        var aBtn = document.getElementsByTagName('input');
        for (var i = 0; i < aBtn.length; i++) {
            aBtn[i].abc = 123       //  这句话,相当于给 3个input添加 自定义属性 abc = 123
                                    //    <input abc="123" type="button" value="按钮1">
                                    //    <input abc="123" type="button" value="按钮2">
                                    //    <input abc="123" type="button" value="按钮3">
        }                           //    但在审查元素中,并不可见
    </script>
</body></html>
1.1、自定义一组开关(onOff)
2121517217752_.pic.jpg
<html lang="en">
<head>
    <meta charset="UTF-8">
    <style media="screen">
        li {
            float: left;
            width: 100px;    height: 100px;    margin: 10px;
            background-color: red;
        }
    </style>
</head>
<body>
    <ul>
        <li></li>
        <li></li>
        <li></li>
    </ul>
    <script type="text/javascript">
        var aLi = document.getElementsByTagName('li');
        for (var i = 0; i < aLi.length; i++) {
            aLi[i].onOff = true;           //  给每一个"li"添加 自定义属性  onOff = true
            aLi[i].onclick = function () {
                if (this.onOff) {          //  判断当前(this)开关为真时执行以下...
                    this.style.cssText = 'background-color:blue;    //   像这种点击一次发生俩件事情、就要用if语句
                }else {                   //   否则  为假时执行以下...
                    this.style.backgroundColor = 'red';
                }
                this.onOff = !this.onOff;      //  当再次点击时、真的 就会变为 假的
            }
        }
    </script>
</body></html>
1.2、获取自身递增数字(num)及匹配数组(arr)内容

匹配数组时就要用到num
点击事件、点击一次、俩次、三次...而执行不同的图片/文字[这里取决于数组内容]

aBtn[i].num = 0; 
this.num ++;

类似于轮播图的按钮功能,点击按钮换图片这里是替换字母

2141517361528_.pic.jpg
<html lang="en">
<head>
    <meta charset="UTF-8">
</head><body>
    <input type="button" value="0">
    <input type="button" value="0">
    <input type="button" value="0">
    <script type="text/javascript">
        var aBtn = document.getElementsByTagName('input');
        var arr = ['A','B','C','D'];      //  可以替换成文字、图片地址

        for (var i = 0; i < aInput.length; i++) {   //  当你想要同时操作多个元素,就用for循环(这里是3个按钮)
            aBtn[i].num = 0;            //  给每一个"li"添加 自定义属性  onOff = true
            aBtn[i].onclick = function () {
                this.value = arr[this.num];
                this.num ++;
                if (this.num == arr.length) {
                    this.num = 0;
                }
            }
        }
    </script>
</body></html>
1.3、添加索引值(index)、匹配数组

index是我们自己定义的属性名称(也可改成其他单词) 这里的 " i" 是for循环里" i" 的 0.1.2

 aBtn[i].index = i;  
2131517361207_.pic.jpg
 <html lang="en">
<head>
    <meta charset="UTF-8">
</head><body>
    <input type="button" value="btn1">
    <input type="button" value="btn2">
    <input type="button" value="btn3">
    <p>大哥:</p>
    <p>二弟:</p>
    <p>三弟:</p>
    <script type="text/javascript">
        var aBtn = document.getElementsByTagName('input');
        var aP = document.getElementsByTagName('p');
        var arr = ['刘备','关羽','张飞']
        for (var i = 0; i < aBtn.length; i++) {
            aBtn[i].index = i;        //  index是我们自己定义的属性名称(也可改成其他单词) 这里的 "i" 是for循环里" i" 的 0.1.2
                                      //  给第 1个"input"添加 自定义属性  index = 0
                                      //  给第 2个"input"添加 自定义属性  index = 1
                                      //  给第 3个"input"添加 自定义属性  index = 0
            aBtn[i].onclick = function () {    //  每一次 按钮 の点击事件
                this.value = arr[this.index];     //  this  代表 当前点击的"这个"按钮
                aP[this.index].innerHTML += arr[this.index];
            }
        }
    </script>
</body></html>

案例1、轮播图(含按钮 和 小圆点)无定时器

屏幕快照 2018-01-31 下午1.34.33.png
<html lang="en">
<head>
    <meta charset="UTF-8">
    <style media="screen">
        * {
            margin: 0; padding: 0;
            list-style: none;
            background-color: #ccc;
        }
        #pic {
            width: 1200px;
            height: 450.23px;
            margin: 100px auto;
            background: url(img/loader_ico.gif) no-repeat center #fff;;
            position: relative;
        }
        #pic img{
            width: 1200px;
            height: 450.23px;
        }
        #pic span,#pic p {
            position: absolute;
            left: 0;
            width: 100%;
            height: 30px;
            line-height: 30px;
            background-color: #333;
            text-align: center;
            color: #fff;

        }
        #pic span { top: 0px; }
        #pic p { bottom: 0px; }
        #pic ul{
            position: absolute;
            top: 0;
            right: -60px;
        }
        #pic li{
            width: 40px;
            height: 40px;
            background-color: #666;
            margin-bottom: 5px;
        }
        #pic li.active{ background-color: #fc3; }
    </style>
</head>
<body>
    <div id="pic">
        <img src="" width="1200" alt="">
        <span>数量正在加载中...</span>
        <p>文字说明正在加载中...</p>
        <ul></ul>
    </div>
    <script type="text/javascript">
        window.onload = function () {
            var oDiv = document.getElementById('pic');
            var oImg = oDiv.getElementsByTagName('img')[0];
            var oSpan = oDiv.getElementsByTagName('span')[0];
            var oP = oDiv.getElementsByTagName('p')[0];
            var oUl = oDiv.getElementsByTagName('ul')[0];
            var aLi = oUl.getElementsByTagName('li');
            var arrUrl = ['images/1.jpg','images/2.jpg','images/3.jpg','images/4.jpg'];
            var arrText = ['小米MIX','红米5A','小米圈铁耳机Pro','小米路由器3'];
            var num = 0;

            //HTML部分并没有写 "li" .而是在JS中写的
            for (var i = 0; i < arrUrl.length; i++) {
                oUl.innerHTML += '<li></li>';
            }
            //初始化
            oImg.src = arrUrl[num];            //  'images/1.jpg'
            oSpan.innerHTML = (num+1) + '/' + arrUrl.length;     //   '1/4'
            oP.innerHTML = arrText[num];      //  '小米MIX'
            aLi[num].className = 'active';    //  默认第一个小方块变黄色
            //小方块的点击事件 => 图片更换
            for (var i = 0; i < aLi.length; i++) {
                aLi[i].index = i;
                aLi[i].onclick = function () {
                    oImg.src = arrUrl[this.index];
                    oSpan.innerHTML = (this.index+1)+'/'+ arrUrl.length;
                    oP.innerHTML = arrText[this.index];
                    for (var i = 0; i < aLi.length; i++) {
                        aLi[i].className = '';       //  清空样式
                    }
                    this.className = 'active'        //  当前点击的小方块变黄色
                }
            }
        }
    </script>
</body></html>

案例2、轮播图(含左右按钮 的顺序播放和循环播放)

屏幕快照 2018-01-31 下午1.19.04.png
<html lang="en">
<head>
    <meta charset="UTF-8">
    <style media="screen">
        * { margin: 0; padding: 0;}
        .wrap {
            width: 520px;
            overflow: hidden;
            margin: 100px auto;
        }
        .wrap_imgs {
            width: 518px;
            height: 348px;
            border: 1px solid #333;
            /* background: url(img/1.jpg) */
            position: relative;
        }
        .wrap_top,
        .wrap_bottom {
            width: 206px;
            margin: 5px 150px;
        }
        input {
            width: 100px;
            line-height: 30px;
            border-radius: 8px;
            background-color: #555;
            color: #fff;
        }
        .wrap_imgs p {
            width: 518px;
            height: 30px;
            position: absolute;
            left: 0;
            line-height: 30px;
            background-color: rgba(0,0,0,.5);
            text-align: center;
            z-index: 1;
            color: #fff;
        }
        .wrap_imgs p.text { top: 0; }
        .wrap_imgs p.number { bottom: 0; }
        .wrap_imgs #imgs {
            position: absolute;
            top: 0;
            left: 0;
            width: 518px;
            height: 348px;
        }
    </style>
</head>
<body>
    <div class="wrap">
        <div class="wrap_top">
            <input id="order" type="button" value="顺序播放">
            <input id="loop" type="button" value="循环播放">
        </div>
        <div class="wrap_imgs">
            <p id="text" class="text">小船</p>
            <p id="number" class="number">1/4</p>
            <img id="imgs" src="img/1.jpg" >
        </div>
        <div class="wrap_bottom">
            <input id="prev" type="button" value="上一张">
            <input id="next" type="button" value="下一张">
        </div>
    </div>
    <script type="text/javascript">
        var oPrev = document.getElementById('prev');         // 上一张
        var oNext = document.getElementById('next');         // 下一张
        var oImgs = document.getElementById('imgs');         //  图片
        var oText = document.getElementById('text');         //  文本内容
        var oNumber = document.getElementById('number');     //   1/4
        var oOrder = document.getElementById('order');      //  顺序播放 按钮
        var oLoop = document.getElementById('loop');        //  循环播放 按钮
        var arrUrl = ['img/1.jpg','img/2.jpg','img/3.jpg','img/4.jpg'];
        var arrText = ['小船','竹林','荷花','山川'];
        var num = 0;
        var onOff = true;   //默认true记录为顺序播放模式 ,false为循环播放

        oOrder.onclick = function () {    //  true 顺序播放
            onOff = true;
        }
        oLoop.onclick = function () {     //  false 循环播放
            onOff = false;
        }
        function fnTab() {         //   公共函数  带入上下按键
            oImgs.src = arrUrl[num];
            oText.innerHTML = arrText[num];
            oNumber.innerHTML = (num+1)+'/'+arrText.length;
        }
        oNext.onclick = function () {   //  下一张
            num ++;
            if (num == arrText.length) {
                if (onOff) {            //  true 顺序播放
                    num = arrText.length-1;
                    // alert('最后一张了')
                }else {                 //  false 循环播放
                    num = 0;
                }
            }
            fnTab()
        }
        oPrev.onclick = function () {   //  上一张
            num --;
            if (num < 0) {
                if (onOff) {        //  true 顺序播放
                    num = 0;
                    // alert('第一张了')
                }else {            //  false 循环播放
                    num = arrText.length-1;
                }
            }
            fnTab()
        }
    </script>
</body></html>

案例3、下拉菜单

屏幕快照 2018-01-31 下午10.09.32.png
<html>
<head>
    <meta charset="UTF-8">
    <style>
        ul,li{ list-style: none; padding: 0; margin: 0;}
        ul{ display: none;}
        h3{ margin: 0; background: cornflowerblue;}
        div{ text-indent: 20px; width: 200px;}
        .active{ background: coral;}
    </style>
</head>
<body>
    <div>
        <h3>分组1</h3>
        <ul>
            <li>分组11</li>
            <li>分组12</li>
        </ul>
    </div>  
    <div>
        <h3>分组2</h3>
        <ul>
            <li>分组21</li>
            <li>分组22</li>
        </ul>
    </div>  
    <div>
        <h3>分组3</h3>
        <ul>
            <li>分组31</li>
            <li>分组32</li>
            <li>分组33</li>
            <li>分组34</li>
            <li>分组35</li>
        </ul>
    </div>  
    <script>
        var h3s = document.getElementsByTagName("h3");
        var uls = document.getElementsByTagName("ul");
        var lis = document.getElementsByTagName("li");
        for (var i = 0; i < lis.length; i++) {
            lis[i].onmouseover = function(){
                for(i = 0; i < lis.length; i++) {
                    lis[i].style.background = "";
                }
                this.style.background = "yellow";
            }
            lis[i].onmouseout = function(){
                for(i = 0; i < lis.length; i++) {
                    lis[i].style.background = "";
                }
            }
        }
        for(var i = 0;i<h3s.length;i++){
            h3s[i].onoff = true;
            h3s[i].index = i;
            h3s[i].onclick = function(){
                for (var i = 0; i < h3s.length; i++) {
                    if(i != this.index){       //   除了点击的h3以外的所有h3
                        h3s[i].className = "";
                        h3s[i].onoff = true;
                        uls[i].style.display = "none";
                    }
                }
                if(this.onoff){
                    this.className = "active";
                    uls[this.index].style.display = "block"; 
                }else{
                    this.className = "";
                    uls[this.index].style.display = "none";
                }
                this.onoff = !this.onoff;
            }
        }
    </script>
</body></html>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,463评论 25 707
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,598评论 18 139
  • 时间真快呢,丹妞都三岁了!不知不觉地,丹妞已经长成了一个能说会道,有自己独立思考能力的小姑娘了。这些变化,我一面惊...
    刘忙不盲阅读 296评论 0 0
  • 以前对于烘培新手来说,蛋挞是一个难以企及的高度,因为千层酥皮的制做工序相当复杂,也就是我们常说的“叠被子”,是件非...
    熊猫GO阅读 301评论 0 0
  • 我在很小的时候,就死过一次了,至今我还清楚地记得,那是一个穿短袖衫的季节,到底是春天还是夏天,那时不晓得,只知道我...
    欢欣鼓舞邓沂沂阅读 433评论 2 4