本文实例为大家分享了Javascript实现单选框效果的具体代码,供大家参考,具体内容如下
描述: 点击每一个li 将li的内容赋值给 div 给当前点击的li加上背景色, 点击空白部分隐藏
技术要点:
1.事件委托
事件委托: 事件代理, 将子节点要做的事情交给父元素来做
原理: 将原来要给子元素添加的事件, 加给父元素, 事件中通过 target || srcElement 找到对应的子节点, 子节点处理具体的操作
优点: 避免使用for 后续加进来的元素也有同样的事件处理
使用: 如果子节点有统一的事件(每一个li都加点击事件 每一个li都输出元素)
ul.onclick = function(evs){ var ev = window.event || evs; // console.log(ev.target || ev.srcElement); var tar = ev.target || ev.srcElement; tar.style.background = 'red'; } // 创建节点 var li = document.createElement('li'); li.innerHTML = '12345'; // 追加进去 ul.appendChild(li);
2.阻止冒泡
由于冒泡产生的问题 阻止冒泡解决
依赖于事件对象
标准: ev.stopPropagation();
"htmlcode">
ev.stopPropagation "htmlcode"><!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>模拟单选框</title> <style> *{ margin: 0; padding: 0; } div{ width: 260px; height: 30px; border: 1px solid #0000ff; margin: 40px auto; font: 14px/30px "微软雅黑"; text-indent: 5px; } ul{ width: 260px; height: 150px; border: 1px solid #0000ff; margin: -40px auto; display: none; } ul > li{ list-style: none; width: 100%; height: 30px; font: 14px/30px "微软雅黑"; text-indent: 5px; } ul > li:hover{ color:#fff5bd; background: #fe6601; } </style> </head> <body> <!-- 1.布局: div 和 列表 并且划上加背景色 --> <div id="content"></div> <ul> <li>HTML</li> <li>CSS</li> <li>JavaScript</li> <li>HTML5</li> <li>CSS3</li> </ul> <script> // 点击每一个li 将li的内容赋值给 div 给当前点击的li加上背景色 // 点击空白部分隐藏 // 1.当鼠标移入div时, ul显示, 反之ul隐藏 // 获取div, ul var div = document.querySelector('div'); var ul = document.querySelector('ul'); var lis = ul.getElementsByTagName('li'); console.log(div, ul, lis); // 鼠标移入div时, ul显示, onmouseenter不会触发父元素事件 div.onmouseenter = function(){ ul.style.display = 'block'; /* 将li的内容赋值给 div 给当前点击的li加上背景色 获取点击的li的值 */ // 获取ul点击事件 ul.onclick = function(evs){ // 增加排他操作 for(var i = 0; i < lis.length; i++){ lis[i].style.background = '#ffffff'; lis[i].style.color = '#000000'; } // 获取事件 var ev = window.event || evs; // 阻止冒泡 ev.stopPropagation ? ev.stopPropagation() : ev.cancelBubble = true; // console.log(ev.target || ev.srcElement); // 获取事件的触发源 var tar = ev.target || ev.srcElement; // div的内容更改为相对应触发源的内容 div.innerHTML = tar.innerHTML; // 给当前点击的li加上背景色 tar.style.background = '#0000FF'; tar.style.color = '#fff5bd'; } } // 点击空白处隐藏 document.onclick = function(){ // ul消失 ul.style.display = 'none'; // div的值设为空 div.innerHTML = ''; // 所有li恢复原来样式 for(var i = 0; i < lis.length; i++){ lis[i].style.background = '#ffffff'; lis[i].style.color = '#000000'; } } // 给每一个li添加划上属性 for(var i = 0; i < lis.length; i++){ // 为li添加划上事件 lis[i].onmouseenter = function(){ this.style.background = '#fe6601'; this.style.color = '#fff5bd'; } // 为li添加划出事件, 恢复为默认样式 lis[i].onmouseleave = function(){ this.style.background = '#ffffff'; this.style.color = '#000000'; } } </script> </body> </html>以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
- 张琍敏1978-雪中莲[台湾复刻版][WAV+CUE]
- 叶蕴仪1993-睡美人[日本版][WAV+CUE]
- 夜晚助兴音乐-群星《新时代床头音乐-性能量》2CD[WAV]
- 24K德国HD金碟《历届奥斯卡获奖金曲》3CD[WAV整轨]
- 邰正宵《重燃爱恋 贰 Walk On》[FLAC/分轨][431.72MB]
- 苏文劭《雨停出来走走》[320K/MP3][81.11MB]
- 苏文劭《雨停出来走走》[FLAC/分轨][210.76MB]
- 群星《2024好听新歌04》十倍音质WAV分轨
- 陈宁《弹指之间HQ》头版限量[低速原抓WAV+CUE]
- 陈宁《故人还》HQCDII限量签名版[低速原抓WAV+CUE]
- 苏文劭《春曲(Lessons)》[320K/MP3][39.8MB]
- 苏文劭《春曲(Lessons)》[FLAC/分轨][97.78MB]
- 群星《2006香港高级视听展原音精选 SACD》[ISO][2G]
- 张琍敏1977-枫林小雨[台湾复刻版][WAV+CUE]
- 林一峰2014-COOKINGMUSIC[香港首版][WAV+CUE]