• JavaScript之实现单选复选、菜单以及返回顶部实例


    1、单选、复选以及反选实例

    其实主要是利用for循环提取标签,然后更改checked属性值实现的

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
        <div>
            <input type="button" value="全选" onclick="CheckAll();"/>
            <input type="button" value="取消" onclick="CancleAll();"/>
            <input type="button" value="反选" onclick="Reverse();">
            <!--//ondblclick表示双击-->
        </div>
    <table>
        <thead>
        <th>序号</th>
        <th>用户名</th>
        <th>年龄</th>
        </thead>
        <tbody id="tb">
        <tr>
            <td><input class="c1" type="checkbox"/></td>
            <td>jay</td>
            <td>23</td>
    
        </tr>
        <tr>
            <td><input class="c1" type="checkbox"/></td>
            <td>Bob</td>
            <td>23</td>
    
        </tr>
        <tr>
            <td><input class="c1" type="checkbox"/></td>
            <td>peter</td>
            <td>23</td>
    
        </tr>
        </tbody>
    <script type="text/javascript">
        function CheckAll() {
            var tb = document.getElementById('tb');
            var checks = tb.getElementsByClassName('c1');
            for (var i=0;i<checks.length;i++){
                var current_check = checks[i];
                current_check.checked = true;
    //        循环每一个标签
            }
        }
        function CancleAll() {
            var tb = document.getElementById('tb');
            var checks = tb.getElementsByClassName('c1');
            for (var i=0;i<checks.length;i++){
                var current_check = checks[i];
                current_check.checked = false;
    //        循环每一个标签
            }
        }
        function Reverse() {
            var tb = document.getElementById('tb');
            var checks = tb.getElementsByClassName('c1');
            for (var i = 0; i < checks.length; i++) {
                var current_check = checks[i];
                if (current_check.checked) {
                    current_check.checked = false;
                } else {
                    current_check.checked = true;
                }
    
            }
        }
    
    </script>
    
    </table>
    </body>
    </html>
    

      2、tab菜单实例

    利用一种对应关系,实现一个tab菜单,主要思路是绑定每两个选项的关系,即当选中一个,则显示出与之对应的选项框,利用for循环实现显示与否

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>菜单</title>
        <style>
            ul{
                list-style: none;
                margin: 0;
                padding: 0;
            }
            ul li{
                float: left;
                background-color: blue;
                color: black;
                padding: 10px 12px;
            }
            .clearfix:after {
                display: block;
                content: '.';
                height: 0;
                visibility: hidden;
                clear: both;
            }
            .tab-menu .title{
                background-color: bisque;
            }
    
            .tab-menu .content{
                border: 1px solid black;
                min-height: 150px;
            }
    
            .hide{
                display: none;
            }
            .tab-menu .title .active{
                background-color: white;
                color:red ;
            }
            /*选中时候的状态*/
        </style>
    </head>
    <body>
    <div style=" 400px;margin: 0 auto">
        <div class="tab-menu">
            <div class="title clearfix">
                <ul>
                    <li target='h1' class="active" onclick="Show(this);">价格趋势</li>
                    <li target='h3' onclick="Show(this);">市场分布</li>
                    <li target='h2' onclick="Show(this);">其他</li>
                </ul>
            </div>
            <div id="jay" class="content">
                <div con="h1">contnet1</div>
                <div con="h2" class="hide">contnet2</div>
                <div  con="h3" class="hide">contnet3</div>
            </div>
        </div>
    
    </div>
    
    <script>
        function Show(ths) {
            //args表示当前标签
            var target=ths.getAttribute('target');
            //给自己添加样式active,兄弟标签则去掉
            ths.className='active';
            var brothers = ths.parentElement.children;
            for (var i=0;i<brothers.length;i++){
                if(ths == brothers[i]){
                }else{brothers[i].removeAttribute('class')}
            }
            
        var contents = document.getElementById('jay').children;
        for(var j=0;j<contents.length;j++){
            var current_content =contents[j];
            var con = current_content.getAttribute('con')
            if(con == target){
                current_content.classList.remove('hide')
            }else{current_content.className='hide'}
        }
            
        }
        
    
    </script>
    
    </body>
    </html>
    

      执行结果如图所示,点击则会切换

    3、往页面列表里面自动添加输入的文本内容

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <div >
        <input type="text">
        <input type="button" value="添加" onclick="foo(this)">
    </div>
    <div>
        <ul id="commentList">
            <li>jay</li>
            <li>BOb</li>
        </ul>
    </div>
    <script>
        function foo(ths) {
            var val = ths.previousElementSibling.value;
            console.log(val);
            var ret = document.getElementById('commentList');
            var str = "<li>" + val + "</li>";
            ret.insertAdjacentHTML('beforeEnd', str);//该方法只能添加字符串
            ths.previousElementSibling.value = '';
    
    //    第二种方法
            var tag = document.createElement('li');
            tag.innerText = val;
    
            ret.appendChild(tag);
        }
    </script>
    
    </body>
    </html>
    

      执行结果如

    可以往下面随便添加内容

    insertAdjacentHTML第一个参数有多种用法,如图

      3、克隆移动标签

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
        <h2 id="h1">333</h2>
        <div id="container">
            <div class="item">1</div>
            <div class="item">1</div>
        </div>
    
    <script>
        var h =document.getElementById('h1');
        var c=document.getElementById('container');
    
        var newH = h.cloneNode(true);//没有true参数的话,不会克隆标签里面的东西
        c.appendChild(newH)
    
    </script>
    
    
    </body>
    </html>
    

      执行结果如图

    4、返回顶部

     scrollTop表示的是离顶部的距离,可以调节这个属性的数值,随时返回顶部,代码如下

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            .go_top{
                position: fixed;
                right:27px;
                bottom: 40px;
                50px;
                height: 40px;
                background-color: black;
                color: white;
            }
            .hide{
                display: none;
            }
        </style>
    </head>
    <body onscroll="Func()">
    <!--只要触动滚轮,就触动发该函数-->
    <div id="i1" style="height: 3000px;background-color: aqua;margin:0 ">
    
        <h1>你好</h1>
    </div>
    <div id="i2" class="go_top hide">
        <a href="javascript:void (0)" onclick="goTop();">返回顶部</a>
    <!--href="javascript:void (0)表示什么也不干-->
    
    </div>
    <script>
        function goTop() {
            document.body.scrollTop=0
        }
    //    返回顶部
        function Func() {
              console.log(123);
            var scrollTop=document.body.scrollTop;
            var li=document.getElementById('i2');
            if(scrollTop>150){
    
                li.classList.remove('hide')
            }else{
                li.classList.add('hide')
            }
        }
    
    //距离大于50px才触发函数,让这个返回顶部的框框显示出来
    </script>
    
    </body>
    </html>
    

      5计时器执行函数

    如图,主要是setInterval方法的使用

    
    
  • 相关阅读:
    sql——查询出表中不为空或为空字段的总值数
    sql语句——根据身份证号提取省份、出生日期、年龄、性别。
    1.两数之和
    Java虚拟机
    【10.18】
    议论文:是否应该留学
    议论文:阅读能力
    应用文:线上广告
    通知(重点:格式)
    书信(重点:格式)
  • 原文地址:https://www.cnblogs.com/xiaobeibei26/p/6623283.html
Copyright © 2020-2023  润新知