qq_27678531 2015-06-11 03:27 采纳率: 100%
浏览 2236
已采纳

如何让li鼠标移入时背景色变成相对应子节点的颜色

  <div class="main" id="omain">
        <ul>
            <li style="background:#ba2452"><img src="image/main_img1.png"/><span style="background:#7c1837">订单管理</span><a>×</a></li>
            <li style="background:#743dc0"><img src="image/main_img2.png"/><span style="background:#4d2980">人资管理</span><a>×</a></li>
            <li style="background:#e1551a"><img src="image/main_img3.png"/><span style="background:#963911">财务管理</span><a>×</a></li>
            <li style="background:#25a1ad"><img src="image/main_img4.png"/><span style="background:#196c73">商机线索</span><a>×</a></li>
            <li style="background:#21af1f"><img src="image/main_img5.png"/><span style="background:#167514">客服业务</span><a>×</a></li>
            <li style="background:#3d80f5"><img src="image/main_img6.png"/><span style="background:#2956a3">工单管理</span><a>×</a></li>
            <li style="background:#25a1ad"><img src="image/main_img7.png"/><span style="background:#196c73">竞网应用</span><a>×</a></li>
            <li style="background:#595959 url(image/main_img8.png) no-repeat center"></li>
        </ul>
    </div>
 window.onload=function(){
    var oMain=document.getElementById('omain');
    var aMli=oMain.getElementsByTagName('li');

    var aA=oMain.getElementsByTagName('a');


    for(i=0;i<aMli.length-1;i++){
        aSpan=aMli[i].getElementsByTagName('span');
        aMli[i].onmouseover=function(){
            this.index=i;
            this.style.background=aSpan[i].style.background;
            aA[i].style.display='block';

        }
    }


}

为何下面的JS没有没有效果,提示aSpan[i]没定义

  • 写回答

2条回答 默认 最新

  • Go 旅城通票 2015-06-11 03:48
    关注

    闭包没做好,你的i为最后aMli.length-1这个值,就是最后一个li没有span当然错了,而且你也要还原吧,需要添加mouseout事件

      <div class="main" id="omain">
            <ul>
                <li style="background:#ba2452"><img src="image/main_img1.png"/><span style="background:#7c1837">订单管理</span><a>×</a></li>
                <li style="background:#743dc0"><img src="image/main_img2.png"/><span style="background:#4d2980">人资管理</span><a>×</a></li>
                <li style="background:#e1551a"><img src="image/main_img3.png"/><span style="background:#963911">财务管理</span><a>×</a></li>
                <li style="background:#25a1ad"><img src="image/main_img4.png"/><span style="background:#196c73">商机线索</span><a>×</a></li>
                <li style="background:#21af1f"><img src="image/main_img5.png"/><span style="background:#167514">客服业务</span><a>×</a></li>
                <li style="background:#3d80f5"><img src="image/main_img6.png"/><span style="background:#2956a3">工单管理</span><a>×</a></li>
                <li style="background:#25a1ad"><img src="image/main_img7.png"/><span style="background:#196c73">竞网应用</span><a>×</a></li>
                <li style="background:#595959 url(image/main_img8.png) no-repeat center"></li>
            </ul>
        </div>
    <script>
        window.onload = function () {
            var oMain = document.getElementById('omain');
            var aMli = oMain.getElementsByTagName('li');
    
            var aA = oMain.getElementsByTagName('a');
    
    
            for (i = 0; i < aMli.length - 1; i++) {
                aMli[i].i = i;
                aMli[i].old = aMli[i].style.background;
                aMli[i].onmouseover = function () {
                    console.log(this.i);
                    this.style.background = this.getElementsByTagName('span')[0].style.background;
                    aA[this.i].style.display = 'block';
    
                }
                aMli[i].onmouseout = function () {//还原
                    this.style.background = this.old;
                    aA[this.i].style.display = 'inline';
                }
            }
    
        }
    </script>
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 三菱伺服电机按启动按钮有使能但不动作
  • ¥20 为什么我写出来的绘图程序是这样的,有没有lao哥改一下
  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥200 关于#c++#的问题,请各位专家解答!网站的邀请码
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号