还是踢球吧 2017-06-09 07:53 采纳率: 25%
浏览 3723

js中switch语句不生效

 <!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <link rel="stylesheet" type="text/css" href="css/reset.css"/>
        <style type="text/css">
            li{
                height: 50px;
                width: 150px;
                border: 1px solid red;
                line-height: 50px;
                text-align: center;
                margin: 100px;
            }
            li a{
                display: inline-block;
                height: 50px;
                width: 100%;
                background: cornflowerblue;
                color: #FFF;
                display: none;
            }
            li .active{
                display: inline-block;
            }
            li div{
                /*border: 1px solid blue;*/
                height: 50px;
                overflow: hidden;
            }
        </style>
    </head>
    <body>
        <ul>
            <li id="business">
                <div id="box">
                    <a href="#" class="active">我是商家用户</a>
                    <a href="#">支付宝商家</a>
                    <a href="#">口碑商家</a>
                </div>
            </li>
        </ul>
    </body>
    <script type="text/javascript" src="js/myQuery.js" ></script>
    <script type="text/javascript">
        var aA=$('box').getElementsByTagName('a');
        var timer=null;
        $('business').onmouseenter=function(){
            for(var i=0;i<aA.length;i++){
                aA[i].className='active';
            }
            aA[0].className='';
            slide($('box'),5);
        }

        $('business').onmouseleave=function(){
            slide($('box'),-5);
        }

        function slide(obj,state){
            clearInterval(timer);
            timer =  setInterval(function(){
                var H = parseInt(getStyle(obj,'height'))+state;
                if(H>=100 || H<=50){
//                  state>0 ? H=100 : H=50;
//                  if(H==50){
//                      aA[0].className='active';
//                  }

                    switch (state){
                        case state<0:
                            aA[0].className='active';
                            break;
                        default:
                            break;
                    }

                    clearInterval(timer);
                }
                obj.style.marginTop=(50-H)/2+'px';
                obj.style.height=H+'px';
            },40)
        }
    </script>
</html>

这是仿的支付宝网页版按钮移入变成两个按钮的事件,但是其中switch语句里面,给class名称赋值active的语句不生效,该switch语句和上面注释的if语句想实现同样的效果

ps:$符是我自己封装的取id的函数,不是jQuery

  • 写回答

6条回答 默认 最新

  • Go 旅城通票 2017-06-09 08:05
    关注

    switch不能这样用的,你case state < 0这个会转为 case true/false,而你的state肯定不是布尔变量,switch是===对比的,类型就不一样了,当然执行执行default

    你要用swith改成这样

                     switch (state < 0) {
                        case true:
                            aA[0].className = 'active';
                            break;
                        default:
                            break;
                    }
    
    
    评论

报告相同问题?

悬赏问题

  • ¥15 微信小程序协议怎么写
  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看