javascript - 实现类似手机联系人的效果,点击右边的ABC...,左边的联系人会跳到相应位置且背景色做出改变?
阿神
阿神 2017-04-10 15:43:07
[JavaScript讨论组]


    
        
        通讯簿
        

    






    

        

        


        


问题代码

如上图所示

阿神
阿神

闭关修行中......

全部回复(2)
迷茫

好吧,看你那么辛苦,我就写点代码:

// 1. 先缓存后面要用到的 DOM
var sliderRight = document.getElementById('slider_right')

// 2. 事件委托给 p#slider_right,用于捕获具体点击到的 a(在 li)里面
sliderRight.addEventListener('click', function(event) {
    var currentLink = event.target            // 拿到当前点击的那个 a
    var currentId   = currentLink.href[1]     // 获取它的 href,得到诸如 #a 这样的东东,然后顺手去掉前面的 #
    
    // 3. 你左边的 li 不都有 id 吗?
    document.getElementById(currentId).style.backgroundColor = '#ADD8E6'
})

收工。几个小细节:

  1. 我没有绑定 mouseover 事件,我也不理解为什么你一开始要用这个事件。你的每个 a 都是有 href 的,点击之后才可以跳转到对应的 li 不是吗?如果列表很长(超过一屏),你 mouseover 过去,对应的背景色变了你也看不到啊?

  2. 如果要适应移动端,你还得绑定诸如 touch 之类的事件,然而这个坑也有的,建议你针对移动端开发还是用一些成熟的工具库,比如 hammer.js 之类的

  3. 我的事件回调函数里没有判断是不是 a,实际中有可能会代理到 event.target 不是 a 的情况(比如得到了一个 li),那么此时获取 href 就无效了,所以为了代码健壮性起见,你需要在函数内自行过滤一些特殊情况。

  4. 善于利用 DOM 结构;善于利用 event 对象。

高洛峰

如上图所示

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

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