DOM操作-上移下移

2023-11-06

HTML

<ul>
	<li style="top: 0;">
		<span>啦啦啦啦</span>
		<i>1</i>
		<input type="button" name="" id="" value="上移" />
		<input type="button" name="" id="" value="下移" />
	</li>
	<li style="top: 50px;">
		<span>哈哈哈哈</span>
		<i>2</i>
		<input type="button" name="" id="" value="上移" />
		<input type="button" name="" id="" value="下移" />
	</li>
	<li style="top: 100px;">
		<span>呱呱呱呱</span>
		<i>3</i>
		<input type="button" name="" id="" value="上移" />
		<input type="button" name="" id="" value="下移" />
	</li>
	<li style="top: 150px;">
		<span>小小小小</span>
		<i>4</i>
		<input type="button" name="" id="" value="上移" />
		<input type="button" name="" id="" value="下移" />
	</li>
</ul>

CSS

*{
	margin: 0;
	padding: 0;
}
ul{
	
	position: relative;
}
li{
	height: 50px;
	position: absolute;
	line-height: 50px;
	/*margin: 10px 0;*/
	left: 0;
}
li i{
	font-style: normal;
}

JS

var Btn=document.getElementsByTagName("input");
var oUl=document.getElementsByTagName("ul")[0];
var timer=null;
for (var i=0;i<Btn.length;i++) {
	Btn[i].index=i;
	Btn[i].οnclick=function(){
		var parent=this.parentNode;
		var pre=this.parentNode.previousElementSibling;
		var next=this.parentNode.nextElementSibling;
		clearInterval(timer);
		//获得和保存该元素父级的定位初始值,准备与变换的值进行对比,当差值等于50px时清除定时器,停止运动
		var oldSpeed=parseInt(getStyle(parent,"top"));
		if(this.index%2==0){
			//上移
			if(this.parentNode ==oUl.firstElementChild){
				alert("到头了");
			}else{
				//元素交换
				oUl.insertBefore(parent, pre);
				timer=setInterval(function(){
					//获得该元素的定位值
					var speed=parseInt(getStyle(parent,"top"));
					//上移定位置递减
					speed--;
					//获得此元素的上一个元素的定位值
					var speed1=parseInt(getStyle(pre,"top"));
					//下移定位置递增
					speed1++;
					//当差值等于50时清除定时器
					if(oldSpeed-speed==50){
						clearInterval(timer);
					}
					parent.style.top=speed+"px";
					pre.style.top=speed1+"px";
				},30)
			}
		}else{
			//下移
			if(this.parentNode == oUl.lastElementChild){
				alert("到尾了");
			}else{
				//元素交换
				oUl.insertBefore(parent,next.nextElementSibling);
				timer=setInterval(function(){
					//获得该元素的定位值
					var speed=parseInt(getStyle(parent,"top"));
					//下移定位值递增
					speed++;
					//获得此元素的上一个元素的定位值
					var speed1=parseInt(getStyle(next,"top"));
					//上移定位值递减
					speed1--;
					//当差值等于50时清除定时器
					if(speed-oldSpeed==50){
						clearInterval(timer);
					}
					parent.style.top=speed+"px";
					next.style.top=speed1+"px";
				},30)
			}
		}
		
	}
}
function getStyle(obj,attr ){
	if(obj.currentStyle){
		return obj.currentStyle(attr);
	}else{
		return getComputedStyle(obj)[attr];
	}
}

  

转载于:https://www.cnblogs.com/yangxue72/p/8031788.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

DOM操作-上移下移 的相关文章

  • 【爬坑之路一】windows系统下更新升级node版本【亲测有效】

    前言 一定要看到最后 项目开发中 需要升级 node 版本 本着不想卸载 node 再重新安装的原则 因为node 的环境配置以及各种相关配置有些繁琐 所以就想着使用 命令的方式进行升级 在网上找了一些升级 node 的命令 最常见的是安装
  • 分布式锁实战

    示例代码 maven引入 maven引入
  • 与困难的利益相关者和团队成员打交道

    经历分歧和冲突是我们作为产品经理和产品所有者的工作的一部分 我们与来自不同部门的广泛人员合作 这是很自然的 我们并不总是同意 有时会发生冲突 但是建设性地解决冲突可能具有挑战性 本文分享了我与困难者打交道并成功解决冲突的建议 这是一个共同的
  • 【性能】JDK和Jmeter的安装与配置

    目录 一 JDK环境配置 1 下载JDK 2 配置JDK环境 二 Jmeter环境配置 1 下载Jmeter 2 配置Jmeter环境 更多干货 完整版文档下载方式 一 JDK环境配置 1 下载JDK 官网下载地址 http www ora
  • C++中print和printf的区别

    print与printf的区别 1 print 中不能使用 s d 或 c 2 print 自动换行 printf 没有自动换行 转载于 https www cnblogs com yun an p 11070228 html
  • MySQL 按照条件统计多张表记录数总数

    一 诉求 数据库中有 4 张订单表 分别为 tbl test order01 tbl test order02 tbl test order03 tbl test order04 分别用于存储四个季度的订单表数据 各表的表结构均相同 以 t
  • Office 2021 简体中文离线安装包下载地址

    Office 2021 简体中文离线安装包下载地址 一 专业增强版 强烈推荐 http officecdn microsoft com pr 492350f6 3a01 4f97 b9c0 c7c6ddf67d60 media zh cn
  • web前端技术笔记()js对象方法讲解

    不带参函数的调用
  • python sqlalchemy 动态创建表,,或动态修改__tablename__的两种方法

    最近在学习sqlalchemy 有个动态修改 tablename 的需求 搜索了好几天 没有太完美的答案 要么看不懂 要么比较古老了 通过研究 整理以下几种sqlalchemy动态修改 tablename 的方法 一 函数封装table m
  • springboot+vue+elementui+阿里云oss上传文件

    才做完课程设计没多久 本来打算早点写这一篇文章 但是由于太懒了 就拖延了好几天 今天没什么事情 就打算写下一篇关于文件上传我文章 希望可以帮助到大家 需要准备 配置好maven 购买阿里云oss 第一步 导入指定的依赖
  • 浅谈测试用例设计

    一 测试用例为什么存在 1 1 定义 测试用例 Test Case 是指对特定的软件产品进行测试任务的描述 体现测试方案 方法 技术和策略 测试用例内容包括测试目标 测试环境 输入数据 测试步骤 预期结果 测试脚本等 最终形成文档类的输出
  • 华为交换机SSH和telnet登录配置

    华为交换机SSH和telnet登录配置 一 网络拓扑 二 SW2配置telnet 1 SW2配置 2 R1登录验证 三 SW2的ssh登录配置 1 生成本地密钥对 2 SW2配置命令 3 R1登录 四 配置console口密码 1 配置命令
  • 红黑树

    写在前面 当在10亿数据进行不到30次比较就能查找到目标时 不禁感叹编程之魅力 人类之伟大呀 学红黑树有感 终于 在学习了几天的红黑树相关的知识后 我想把我所学所想和所感分享给大家 红黑树是一种比较难的数据结构 要完全搞懂非常耗时耗力 红黑
  • 约束布局的使用(二)

    主要介绍app layout constraintWidth max app layout constrainedWidth app layout constraintDimensionRatio和Guideline的使用 一 app la
  • 无锁队列-使用hazard指针解决ABA问题

    无锁队列 使用hazard指针解决ABA问题 分类 网络安全 工具使用 文章 实现一个无锁队列 原子操作使用了tbb atomic ABA问题使用hazard指针解决 无锁队列实现 查看文本 打印 msque hpp Created on
  • Leetcode76 最小覆盖子串题解

    题目网址 https leetcode cn com problems minimum window substring 题目分析 这道题目 明显之处在于 我们需要在字符串 s 中框出一个窗口 来判断这个窗口中的子串是否覆盖了 t 如下图所
  • 2021-02-08

    学习目标 窗口函数等 天池龙珠计划SQL训练营 学习内容 5 1窗口函数 5 1 1窗口函数概念及基本的使用方法 5 2窗口函数种类 5 2 1专用窗口函数 5 2 2聚合函数在窗口函数上的使用 5 3窗口函数的的应用 计算移动平均 5 3
  • 工作失误点反思

    工作前考虑 1 查明工作服务对象 依赖对象 这个工作依赖于什么 为了什么 前置条件是否允许 2 是否有人做过 是否要重用 重用要考虑两者关系 工作时考虑 1 效率最高位 易读度第二位 编写复杂度最后位 2 头文件 格式 注释
  • 黄哥通过代码来说明:python语法糖

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 下面用一个例子来说明 coding utf 8 foo decorator foo 语句的作用是将foo函数作为参数传递到decorator 返回值赋值给foo 那么foo
  • Linux基础命令

    Linux基础命令 ls 列出 英文全称 list 格式 ls options 选项 arges 参数 root localhost ls l 总用量 4 rw 1 root root 1297 3月 18 02 38 anaconda k

随机推荐

  • log level

    一 LK层 首先 在LK中 有一个对log打印级别的控制文档 其路径一般为 vendor mediatek proprietary bootable bootloader lk include debug h 以mtk平台为例 在inclu
  • 机器学习-

    可用数据集 kaggle UCI scikit learn kaggle 网址 https www kaggle com datasets UCI 网址 https archive ics uci edu ml scikit learn 网
  • UE4 安卓AR 识别图片

    UE4 安卓AR 识别图片 开启一个插件 准备一个只有玩家出生点的场景 这个场景用来做识别图片的 新建一个游戏模式 设置好默认的pawn类 一个摄像机就行了 代表手机开启AR会话后的那个相机 然后gamemode 事件开始运行 就直接开启A
  • C/C++堆溢出(stack overflow)的解决

    问题 堆溢出 stack overflow 解决 1 在VS里面设置 属性 链接器 系统 堆栈保留大小 2 通过代码 第一个值是堆栈的保留空间 第二个值是堆栈开始时提交的物理内存大小 堆栈改变为100M pragma comment lin
  • 用Arduino和蓝牙模块做一个开门装置

    用Arduino和蓝牙模块做一个开门装置 闲来无事 给门上装一个不用钥匙开门的装置 如图 学校很老的锁也搞不出什么花样了 就拿个舵机拉根杜邦线拽着锁 很简单的东西 做着玩玩 好吧 我承认看着有点 低电平 用的好像是HC04蓝牙模块吧 就网上
  • C++中函数对象(仿函数)的基本使用

    什么是函数对象 重载函数调用操作符的类 称其为函数对象 函数对象使用重载的 行为类似函数调用 也叫仿函数 1 函数对象在使用的时候 可以像普通函数那样调用 可以有参数 有可以有返回值 但本质上并不是一个函数 而是一个对象 类名 class
  • xxl-job的使用

    1 下载xxl job调度中心代码 可从这两个地址下载 https github com xuxueli xxl job https gitee com xuxueli0323 xxl job 2 下载后解压用idea打开 目录 doc d
  • 在浏览器中输入网址后回车发生了哪些事情

    最近在和许多同学交流面经的时候 发现有一个问题 无论你是前端开发 还是后端开发 被问到的概率很高 在此 我想把这个问题记录一下 总体来说 在浏览器的地址栏中输入网址后 发生了如下的事情 DNS解析 TCP连接 发送HTTP请求 服务器处理请
  • jenkins生成html测试报告和新增用户

    这里仅记录一下踩过的坑 1 新增用户 2 html报告的生成 构建报错1 jenkinsModuleNotFoundError No module named pytest html 或者报错 jenkins 执行提示 pytest err
  • 程序员就业和发展前景,一文带你了解

    程序员 英文是 code worker 顾名思义就是计算机程序的作者 它通常指从事计算机软件开发的人员 当然也包括用计算机语言编写程序来进行各种信息处理的人 现在软件行业中 程序员属于技术含量较高的一个群体 程序员就业和发展前景也是在众多行
  • 微信小程序-伸缩性最强的table组件

    微信小程序 伸缩性最强的table组件 微信小程序很大的一个诟病之一就是没有table组件 小程序中正常显示表格依然是令人头痛的问题 下面使用flex布局模拟现实一个小程序的table组件 支持内容过多滑动 设置单元格宽度等 1 效果图 微
  • Java---System类,RunTime类,Random类

    System类 系统类 主要获取系统的属性数据 还有标准的输入 输出及错误输出流 主要介绍一些常用的方法 1 数组拷贝 arraycopy Object src int srcPos Object dest int destPos int
  • open3d显示rope3d标注内容

    open3d是我发现比较好用且功能全面的3D库 下面演示显示rope3d的标注内容 其他调用的库有pandaset geometry等 usr bin env python3 coding utf 8 import pcl import o
  • 关于联想G480BIOS中的设置

    由于一段时间对笔记本电脑中的BIOS设置很感兴趣 故在网上搜索一下 找到这篇博客 为了以后那天能用上就先转载一下 以备后用 地址为 关于G480BIOS设置
  • 微信小程序登录问题--第一次登录失败刷新再次登录成功问题

    出现这样问题都是先获取用户信息wx getUserInfo encryptedData与iv 再进行登录wx login 获取code code是用来生成session key用来解密encryptedData与iv的 所以等你先获取用户e
  • Java实现二阶魔方旋转

    魔方可以对它的6个面自由旋转 我们来操作一个2阶魔方 如图1所示 为了描述方便 我们为它建立了坐标系 各个面的初始状态如下 x轴正向 绿 x轴反向 蓝 y轴正向 红 y轴反向 橙 z轴正向 白 z轴反向 黄 假设我们规定 只能对该魔方进行3
  • linux延迟函数sleep

    include
  • 不用密码卸载symantec

    之前在某公司实习的时候 需要安装这个软件 后面尝试了很多网上的方法 都无法卸载掉 最后还是使用了杀手锏 官方的卸载软件cleanwipe 按照步骤 很简单的就卸载掉了 这里附上链接 最后面的附件可以下载 Download the Clean
  • 滑动拼图和文字点选两种类型的验证码

    前言 行为验证码通过用户的操作来完成验证 常见的行为验证码有拖动式和点触式 拖动式验证就是根据图片显示 将指定的图形拖动到指定位置完成验证 而点触式验证码就是通过鼠标点击出示例中出现的图形完成验证 行为验证码应用 今天推荐一款非常优秀的行为
  • DOM操作-上移下移

    HTML ul li span 啦啦啦啦 span i 1 i li ul