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条)

报告相同问题?

悬赏问题

  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作