javascript - 导航菜单的JS代码的一个小BUG不知道如何解决求指导3.10更新
巴扎黑
巴扎黑 2017-04-11 12:34:30
[JavaScript讨论组]

本人新手做了一个导航菜单,到最后一步了,有一个小BUG,就是当鼠标移出导航时,导航菜单还会有一个被选中时设计的样式,按理说我已经设置了离开事件,使导航恢复静态页面的背景颜色,反反复复使用各种方法也没得到解决。更新部分:已加入CSS和HTML,因为是新手所以写的时候也感觉很笨拙的样子,之前自己在网上查找交互琢磨了半天,用一一对应的方法可以完美显示,但是感觉这个方法很笨重,所以一直琢磨这种循环的方法。mouseover部分就不说了,mouseout部分我在循环内写过比如listMore[i].onmouseout=function()包裹在i循环中,与j分开,【】内试了用J无效,会出现鼠标离开更多列表listmore的确会消失,但是单独从list离开即左边菜单列表就无效,一定要移动到右边再离开才行。也有尝试用if嵌套事件来判定移开到那部分判定,或者同时设定左右两部分||离开函数,不知道是我写法有问题还是什么也失败了。所以才重新定义了变量main,和右边大p right,分为内外两部分,内部循环和外部直接监听,之前的问题都解决了,就是小白框去不掉。这就是我的整个的思路,如果可以用if和||判定的话 也是最好了,希望是我的输入有问题导致的失败。望指教。





无标题文档


    
    

女装 男装 零食 电脑 手机

当季流行>

2017春季新品 2017春季特卖 羽绒服 连衣裙 帽子
外套 牛仔裤

精选上装>

风衣 毛衣 针织衫 短外套 小西服
衬衫

女鞋>

帆布鞋 皮鞋 白鞋 黑鞋 豆豆鞋
拖鞋 时装鞋

特色女装>

时尚气质套装 休闲运动套装 装精选妈妈 妈装大码女装 职业套装 优雅旗袍 唐装 小码女装

当季流行>

2017春季新品 2017春季特卖 羽绒服 连衣裙 帽子
外套 牛仔裤

男士外套>

夹克 毛衣 针织衫 棉衣 小西服
马甲

男士内搭>

衬衫 卫衣 T恤 打底衫 背心
短袖 POLO衫

男士裤装>

牛仔裤 休闲裤 西裤 小脚裤 运动裤 工装裤 短裤 9分裤

进口食品>

进口零食 进口巧克力 进口饼干 进口果干 进口饮料
进口葡萄酒 进口洋酒

休闲零食>

零食 坚果 饼干 蛋糕 红枣
巧克力

酒类>

啤酒 白酒 干红 保健酒 配制酒
葡萄酒 黄酒

茶叶>

大麦茶 大红袍 菊花茶 红茶 铁观音 花茶 西湖龙井 柠檬片

电脑整机>

戴尔 方正 联想 外星人 苹果
索尼 华硕

电脑组装>

显示器 显卡 主机 CPU 硬盘
音响

电脑外设>

键盘 机械键盘 鼠标 鼠标垫 耳机
风扇

热门手机>

小米 ipone 魅族 荣耀 乐视
oppo vivo

特色手机>

YunOS 千元指纹 大屏 自拍 移动
联通

智能数码>

智能设备 智能手表 智能手环 VR眼镜 智能健康
智能摄像 智能机器人

巴扎黑
巴扎黑

全部回复(5)
天蓬老师

为什么你mouseover事件绑定时list是带下标的,mouseout的时候没有带下标了

大家讲道理

你都是循环设置的mouseover,也应该循环设置mouseout;不过你这个总体写法很有问题

高洛峰

不贴出html和css这种问题不好解答,不过仅仅针对这段代码题主应该了解下js操作dom时候做缓存,还有事件委托一些概念

ringa_lee
main._index = this.index; // list[i].onmouseover 里面 放 这 代码 获取 当前 元素 的 下标 保存 main._index 中
list[this._index].style.backgroundColor = "#DED5D5"; // 鼠标 移开的  位置 main.onmouseout 里面 放 这 代码
怪我咯

问题的本质还是太不伦不类了 貌似是我异想天开了内外两层函数的概念了.... 有始有终吧,相比于一一对应或者className追加样式来说...我还是比较喜欢这种方式吧..代码如下.. 还是比较笨重,不敢乱改简略....留给需要的同学吧。

<script type="text/javascript">

  window.onload=function(){
  var list=document.getElementById("shopList").getElementsByTagName("a");// 左边的菜单下的a标签  男装女装化妆品等
  var listMore=document.getElementsByName("listMore");  // 右边绝对定位的p
          for(var i=0;i<list.length;i++){
          list[i].index=i;
          list[i].onmouseover=function(){
                   for(var j=0; j < listMore.length; j++){
                    listMore[j].index=j;
                    listMore[this.index].style.display="none";
                    list[this.index].style.backgroundColor="#DED5D5";       //每次鼠标滑过后返回默认样式
                 };
                   listMore[this.index].style.display="block";               
                   list[this.index].style.backgroundColor="white";      //鼠标滑过的样式
                 }
           list[i].onmouseout=function(){
              for(var j=0; j < listMore.length; j++){
                    listMore[j].index=j;
                    listMore[this.index].style.display="none";                    //鼠标离开的样式即默认样式
                    list[this.index].style.backgroundColor="#DED5D5";
           } 
           }     
          listMore[i].onmouseover=function(){
              this.style.display="block"                               //鼠标滑过更多内容时的样式
              list[this.index].style.backgroundColor="white" ;
          }
          listMore[i].onmouseout=function(){
            this.style.display="none";
            list[this.index].style.backgroundColor="#DED5D5";          //鼠标离开更多内容时的样式
          }  
   } 

}

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号