赞
踩
1、理解HTML DOM的节点树的基本概念
2、掌握DOM节点的访问方法
3、掌握Window对象属性和常用方法,学会利用window对象进行简单编程
1、完成以下效果的网页设计:
初始页面如下:
当鼠标在课程库中选择一个项时,选择的项变成灰色,并且课程库的轮廓被激活。
当把课程库中的项推拽到你的课程中时,你的课程的轮廓被激活,变成蓝色的轮廓如下:
当推拽课程的坐标在你的课程中释放时,你的课程轮廓取消激活状态,且判断是否已经存在该课程,如果有,则无任何事发生,否则将在你的课程中新增课程,如下:
当鼠标拽到其他区域时,不会导致你的课程中新增该课程。
<html> <head> <style> ul{ list-style-type: none; padding:0; margin:0; } .area{ border:1px solid black; overflow-y: scroll; height: 150px; width: 150px; border-radius: 3px; padding: 0px 5px; } .area:active{ outline:2px solid black; } .userlist.active{ outline:2px solid blue; } .dragging{opacity: 0.5;} .item{ text-align: left; } </style> </head> <body> <table align="center" draggable="false"> <caption>选课系统</caption> <tr align="center"> <td>课程库</td> <td>你的课程</td> </tr> <tr> <td> <div> <ul class="area courselist"> <li class="item" draggable="true">计算机网络</li> <li class="item" draggable="true">数据结构</li> <li class="item" draggable="true">Java程序设计</li> <li class="item" draggable="true">Web前端开发技术</li> <li class="item" draggable="true">JavaEE技术</li> <li class="item" draggable="true">计算机组成原理</li> <li class="item" draggable="true">离散数学</li> <li class="item" draggable="true">C语言程序设计</li> <li class="item" draggable="true">Python程序设计</li> <li class="item" draggable="true">软件工程</li> <li class="item" draggable="true">软件测试</li> </ul> </div> </td> <td align="center"> <div> <ul class="area userlist"></ul> </div> </td> </tr> </table> <script> const courseList = ['计算机网络','数据结构','Java程序设计', 'Web前端开发技术','JavaEE技术','计算机组成原理','离散数学', 'C语言程序设计','Python程序设计','软件工程','软件测试'] const list = [] const items = document.querySelectorAll('.item') const userlist = document.querySelector('.userlist') // 跟踪被拖拽项 let draggedItem = null for (let i = 0; i < items.length; i++) { const item = items[i] item.addEventListener('dragstart', function(e) { draggedItem = item setTimeout(function() { item.classList.add('dragging') }, 0) }) item.addEventListener('dragend', function(e) { draggedItem.classList.remove('dragging') draggedItem = null }) } const areas = document.querySelectorAll('.area') for (let i = 0; i < areas.length; i++) { const area = areas[i] area.addEventListener('dragover', function(e) { e.preventDefault() }) area.addEventListener('dragenter', function(e) { if (e.target.classList.contains('area')) { e.target.classList.add('active') } }) area.addEventListener('dragleave', function(e) { if (e.target.classList.contains('area')) { e.target.classList.remove('active') } }) area.addEventListener('drop', function(e) { if (e.target.classList.contains('userlist')) { const newItem = document.createElement('li') newItem.textContent = draggedItem.textContent // 判断是否已经存在该课程 if (list.includes(newItem.textContent)) { return } list.push(newItem.textContent) userlist.appendChild(newItem) } e.target.classList.remove('active') }) } </script> </body> </html>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。