js实现拖拽排序

<!DOCTYPE html>
<html lang="zh"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>拖拽排序</title><style>* {margin: 0;padding: 0;box-sizing: border-box;}ul {margin: 20px auto;width: 200px;list-style-type: none;}li {margin: 5px;text-align: center;width: 200px;height: 30px;background: skyblue;}.list .moving {background: transparent;color: transparent;border: 1px dashed #ccc;}</style></head><body>可拖动排序,改变数组,<div id="Application"><ul class="list" v-model="checkList"><li draggable="true" value="1">1</li><li draggable="true" value="2">2</li><li draggable="true" value="3">3</li><li draggable="true" value="4">4</li><li draggable="true" value="5">5</li></ul><ul>您的数据排序是:<h2 id="view"></h2></ul></div></body>
</html>
<script type="text/javascript">const forli = () => {var arr = document.getElementsByTagName('li');var	temp = [];for (var i = 0; i < arr.length; i++) {temp.push(arr[i].innerHTML)div = document.getElementById("view");div.innerHTML = JSON.stringify(temp);}}forli(); //先执行一遍let list = document.querySelector('.list')let currentLi // 记录拖拽元素list.addEventListener('dragstart', (e) => {e.dataTransfer.effectAllowed = 'move' // 拖动样式改为 "move"currentLi = e.target//异步setTimeout(() => {currentLi.classList.add('moving')})})list.addEventListener('dragenter', (e) => {e.preventDefault() // 阻止默认事件if (e.target === currentLi || e.target === list) { // 当移动到当前拖动元素,或者父元素上面我们不做操作return}let liArray = Array.from(list.childNodes)let currentIndex = liArray.indexOf(currentLi) // 获取到拖动元素的下标let targetindex = liArray.indexOf(e.target) // 获取到目标元素的下标if (currentIndex < targetindex) {list.insertBefore(currentLi, e.target.nextElementSibling)} else {list.insertBefore(currentLi, e.target)}})list.addEventListener('dragover', (e) => {e.preventDefault();forli();})list.addEventListener('dragend', (e) => {currentLi.classList.remove('moving')})
</script>

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/359326.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

秋招突击——6/17——复习{整理昨天的面试资料}——新作{删除链表倒数第n个节点}

文章目录 引言复习新作删除链表倒数第N个节点题目描述个人实现参考实现 总结 引言 主管面&#xff0c;面的很凄惨&#xff0c;不过无所谓了&#xff0c;我已经尽力了。上午都在整理的面经&#xff0c;没有复习算法&#xff0c;而且这两天要弄一下论文&#xff0c;二十号就要提…

✅难得真实的生产数据库死锁问题排查过程

以下是笔者看网上并结合自己的经历整理所得。真真切切的发生的事情。希望能帮助到你 这是一个真实的生产问题&#xff0c;经过长时间的排查和多次寻求 DBA 的帮助&#xff0c;最终我自己花了一个月的时间才定位到这个问题。问题非常有意思&#xff0c;值得大家关注。 问题现象…

设计模式原则——里氏替换原则

设计模式原则 设计模式示例代码库地址&#xff1a; https://gitee.com/Jasonpupil/designPatterns 里氏替换原则 继承必须确保父类所拥有的性质在子类中依然成立 与开闭原则不同的是开闭原则可以改变父类原有的功能&#xff0c;里氏替换原则不能修改父类的原有的性质&#…

2024届应届生突破1179万人,如何瞄准AI行业,获得高薪职业前景

应届生如何开启AI行业的职业生涯&#xff1f; ©作者|Zhongmei 来源|神州问学 引言 人工智能和数据科学几乎可以在任何产生数据的场合中发挥作用&#xff0c;因为它们开辟了一种全新的范式——让机器能够从数据中提炼出知识。自2011年人工智能走出实验室的门槛&#xff0c…

tedsign vue3 web-端框架中封装一个验证码组件 以及对应node 接口逻辑说明

一个这样的组件 我直接上代码了 <template><t-loading size"small" :loading"loading" show-overlay><div class"container" click"refresh"><div v-if"svg" class"svg" v-html"svg&…

数据驱动制造:EMQX ECP 指标监测功能增强生产透明度

迈向未来的工业生产&#xff0c;需要的不仅是自动化&#xff0c;更是智能化。如果工业企业的管理者能够实时监测每一生产环节的设备运行状态&#xff0c;每一数据点位情况&#xff0c;洞察和优化每一步生产流程&#xff0c;他们将能够做出更精准的决策&#xff0c;提高生产效率…

支付互通新进展:微信收款码全场景接入银联网络

随着支付便利化工作的不断推进&#xff0c;条码支付互联互通已经成为行业发展的重要趋势。 近日&#xff0c;银联网络迎来微信支付收款码场景的全面接入。 这一举措推动条码支付互联互通取得新进展&#xff0c;为境内外广大消费者提供更多支付选择、更好支付体验。无论从行业…

已经被驳回的商标名称还可以申请不!

看到有网友在问&#xff0c;已经驳回的商标名称还可以申请不&#xff0c;普推商标知产老杨觉得要分析看情况&#xff0c;可以适当分析下看可不可以能申请&#xff0c;当然最终还是为了下证 &#xff0c;下证概率低的不建议申请。 先看驳回理由&#xff0c;如果商标驳回是绝对理…

代码随想录day32

一旦有重叠区域&#xff0c;则用min更新右边界 class Solution(object):def findMinArrowShots(self, points):""":type points: List[List[int]]:rtype: int"""points.sort(keylambda x:x[0])if len(points)0:return 0count 1for i in range(…

gitlab仓库中用git bash生成不是默认路径的ssh秘钥

使用命令 ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" 会在默认路径生成秘钥&#xff0c;&#xff08;C:\Users\用户\.ssh\&#xff09; 想要修改默认路径使用如下命令&#xff1a; ssh-keygen -t rsa -b 4096 -C "your_emailexample.com"…

nginx负载均衡案例,缓存知识----补充

负载均衡案例 ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near great all on wordpress.* to wp172.16.1.% indentified by 1 at line 1 MariaDB [(none)]>…

openstack-同一物理机中透传不同GPU时的nova配置记录

文章目录 前言一、不同加速卡的型号信息二、计算节点增加配置信息1.nova-compute服务的nova.conf 三、控制节点增加配置信息1.nova-conductor服务的nova.conf2.nova-scheduler服务的nova.conf3.nova-api服务的nova.conf 四、准备实例模版五、进行测试&#xff0c;创建虚拟机、检…

【操作系统】多进程拷贝|进程重载

&#x1f525; 博客主页&#xff1a; 我要成为C领域大神&#x1f3a5;系列专栏&#xff1a;【C核心编程】 【计算机网络】 【Linux编程】 【操作系统】 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 本博客致力于分享知识&#xff0c;欢迎大家共同学习和交流。 ​ 为什么要进行…

FEP分液漏斗Teflon耐酸碱四氟耐腐蚀耐高温250ml

FEP分液漏斗&#xff1a;也叫特氟龙分液漏斗、特氟龙梨型分液漏斗等。广泛应用于痕量分析、超痕量分析、ICP-MS分析、同位素分析等实验。 规格参考&#xff1a;125ml、250ml、500ml、1000ml 其主要特性有&#xff1a; 1.内壁对溶剂无粘贴性和吸附&#xff0c;可完全排空&…

Springboot 权限认证框架 -- SA-Token 简介(一)

引言 现今的软件开发中&#xff0c;权限认证与访问控制是每一个应用都必不可少的功能。SA-Token是一个简单、安全、易用的权限认证框架&#xff0c;它主要解决登录认证、权限认证、Session会话、单点登录等功能。SA-Token以其轻量级、零学习成本的特点&#xff0c;迅速赢得了开…

无重复字符串的排列组合

题目链接 无重复字符串的排列组合 题目描述 注意点 字符都是英文字母字符串长度在[1, 9]之间字符串每个字符均不相同 解答思路 字符串中有n个字符&#xff0c;则其排列组合的数量为n * (n - 1) * (n - 2) * … * 1可以深度优先遍历找到字符串的所有排列组合&#xff0c;且…

用Java获取键盘输入数的个十百位数

这段Java代码是一个简单的程序&#xff0c;用于接收用户输入的一个三位数&#xff0c;并将其分解为个位、十位和百位数字&#xff0c;然后分别打印出来。下面是代码的详细解释&#xff1a; 导入所需类库: import java.util.Scanner;&#xff1a;导入Scanner类&#xff0c;用于从…

【源码+文档+调试讲解】牙科就诊管理系统

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本牙科就诊管理系统就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕庞大的数据信息…

网络编程(七)网络超时检测

文章目录 一、概念二、实现方式&#xff08;一&#xff09; 使用select实现超时检测1. select函数补充说明&#xff1a;2. 使用示例3. 输出结果 &#xff08;二&#xff09; 使用setsockopt函数1. 函数定义2. 获取发送缓冲区和接收缓冲区的大小3. 端口复用4. 设置超时时间 &…

【C++】文件处理(IO流)

文章目录 C IO流1. C语言IO2. CIO2.1 C标准IO流2.2 C文件IO流2.3 C IO 文件常用函数总结表2.4 C stringstream C IO流 回顾一下&#xff0c;C语言中IO输入输出的 1. C语言IO C语言中常用的输入输出函数有如下几种&#xff1a;前者是格式化标准输入输出&#xff0c;后者是格式化…