栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

举例说明js如何拖拽排序?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

举例说明js如何拖拽排序?

  • 可能和 @HCLQ 说的思路差不多
const $box = document.querySelector('.box');let data = ['A', 'B', 'C', 'D'];let fragment = document.createdocumentFragment();let $li = document.createElement('li');const render = () => {    while ($box.children.length > 0) {        $box.removeChild($box.firstChild)    }    data.forEach((e, i) => {        let $cloneLi = $li.cloneNode();        $cloneLi.innerHTML = e;        $cloneLi.setAttribute('draggable', true);        fragment.appendChild($cloneLi);        $box.appendChild(fragment);    });}const changeData = (fromValue, toValue) => {    // fromIndex 原数据索引    let fromIndex = data.indexOf(fromValue);    // 删除fromIndex    data.splice(fromIndex, 1);    // toIndex(注意在删除之后取)    let toIndex = data.indexOf(toValue);    // 在toIndex后插入源数据    data.splice(toIndex + 1, 0, fromValue);}render();$box.setAttribute('draggable', false);$box.addEventListener('dragstart', e => {    let $currentLi = e.target;    e.dataTransfer.setData('content', $currentLi.innerHTML);})$box.addEventListener('dragenter', e => { e.preventDefault(); })$box.addEventListener('dragover', e => { e.preventDefault(); })$box.addEventListener('drop', e => {    let fromValue = e.dataTransfer.getData('content');    let toValue = e.target.innerHTML;    changeData(fromValue, toValue)    render();})
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/382180.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号