当前位置: 首页 > 面试题库 >

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

刘海
2023-03-14
本文向大家介绍举例说明js如何拖拽排序?相关面试题,主要包含被问及举例说明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();
})
 类似资料:
  • 本文向大家介绍举例说明js拖拽用到的事件有哪些?相关面试题,主要包含被问及举例说明js拖拽用到的事件有哪些?时的应答技巧和注意事项,需要的朋友参考一下 鼠标按下事件 onmousedown 鼠标移动事件 onmousemove 鼠标抬起时间 onmouseup

  • 本文向大家介绍举例说明js如何实现继承?相关面试题,主要包含被问及举例说明js如何实现继承?时的应答技巧和注意事项,需要的朋友参考一下 JavaScript 基于原型链实现的继承,简单来说就是通过对象的实现的向上查找。 比如你从未定义过方法,但是你却可以在任何地方使用它,原因就是当你使用时,他会先在自身查找看看没有这个方法,如果没有就根据寻找他的原型对象,看看他的原型对象上有没有....知道找到为

  • 本文向大家介绍举例说明如何使用WebSQL?相关面试题,主要包含被问及举例说明如何使用WebSQL?时的应答技巧和注意事项,需要的朋友参考一下

  • 本文向大家介绍举例说明useState相关面试题,主要包含被问及举例说明useState时的应答技巧和注意事项,需要的朋友参考一下

  • 本文向大家介绍JS拖拽排序插件Sortable.js用法实例分析,包括了JS拖拽排序插件Sortable.js用法实例分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JS拖拽排序插件Sortable.js用法。分享给大家供大家参考,具体如下: 最近由于项目功能设计的原因,需要对table中的行实现拖拽排序功能,找来找去发现Sortable.js能很好的满足这个需求,而且它还是开源的,于

  •   生成器是一种返回可迭代对象的函数。 Generator 函数必须至少包含一个 yield 语句。 yield 是 Python 中的一个关键字,用于从函数返回值而不破坏其当前状态或对局部变量的引用。 带有 yield 关键字的函数称为生成器。   生成器仅在被要求执行时生成一次项目。 它们的内存效率很高,占用的内存空间更少。   初学者,可以把yield理解为return的另一种形式, 但是它