dom元素按照比较项排序

关于dom元素 按照一个比较项进行排序(比如dom的高度或文本值等…)

你好! 这是我第一次使用 Markdown编辑器 也是第一次写CSDN。本篇文章介绍我在学习中用到的排序,每次排序按照思路都可以进行稍微修改一下就可以使用,希望能帮助大家。

应用实例1:

简单介绍一下小程序,input输入框输入10~100的数点击按钮在(左、右)插入或删除队列元素,下方红色统计按照上方输入的数进行显示,点击排序按照显示高低(也是输入的数字)进行排序。

简单介绍一下小程序,input输入框输入10~100的数点击按钮在(左、右)插入或删除队列元素,下方红色统计按照上方输入的数进行显示,点击排序按照显示高低(也是输入的数字)进行排序。

排序完成后的样子 内部属性也要跟随

排序完成后的样子 内部属性也要跟随

应用实例2:

排序前

这里简单介绍一下小程序,在输入框输入姓名、年龄后插入就可插入到统计表格中,点击移入变色鼠标在表格项中移动会有高亮显示,让操作人员更清晰的分辨指哪一行,点击删除可以删除数据,下方搜索可以搜索名字,搜索到的相应行有高亮显示,关键点排序是按照年领进行排序。而且内部属性和子元素都要进行跟随排序,
排序后
这里是排序后的样子

实例1代码段:

	// 点击排序
	// 点击按钮
	$('.sortBtn').click(function() {
		// 创建两个数组
		var arr = [];
		var arr1 =[];
		$(".count div").each(function(idex) {
			// console.log($(this).height());
			// 拿到比较项放入数组
			arr[idex] = $(this).height();
			// 拿到dom
			arr1[idex] = this;
			// console.log(arr);
		});
		console.log(arr,arr1[0]);
		// 排序比较项数组
		arr.sort(function(a, b) {
			return a - b;
		});
		
		console.log(arr,arr1);
		// 循环遍历比较项数组
		arr.forEach(function(item,idex){
			// 内层循环dom数组
			arr1.forEach(function(item2,idex2){
				// 如果 比较项第一个 等于当前循环的比较项就进入
				if(arr[idex] == $(arr1[idex2]).height()){
					// 新建一个克隆dom
					var $sortDom = $(arr1[idex2]).clone(true);
					// 删除被克隆的
					$(arr1[idex2]).remove();
					// 将被克隆的插入
					$('.count').prepend($sortDom);
					// console.log($('.count').children());
					// console.log($(arr1[idex2]));
				arr1[idex2]="";
				// console.log(item);
				return;
			}
			})
			
		});

	});

此段代码中注释有详细说明具体操作,有注释掉的console.log(),这些打印的数据可以让调试更加清晰。

实例2代码段:

	// 点击开始排序
	
	$('.sortBtn').click(function(){
		// 创建两个数组 盒子
		var arr =[];
		var arr1 = [];
		
		$('.table tbody tr').each(function(idex){
			// 拿到比较项放入数组
			arr[idex] = parseInt($(this).children('td:eq(2)').text());
			// 拿到dom元素放入数组
			arr1[idex] = this;
		});
		// console.log(arr,arr1);
		// 对比较项进行排序
		arr.sort(function(a,b){
			return b - a;
		});
		// console.log(arr);
		
		// 循环遍历比较项数组
		arr.forEach(function(item,idex){
			// 内部循环dom数组
			arr1.forEach(function(item1,idex1){
				// 如果比较项数组的idex项 等于当前循环的比较项就进入
				if(arr[idex] == $(arr1[idex1]).children('td:eq(2)').text()){
					// 克隆
					var $newDom = $(arr1[idex1]).clone(true);
					// 删除被克隆的
					$(arr1[idex1]).remove();
					// 按照排序后的顺序插入
					$('.table tbody').prepend($newDom);
				}
			});
		});
	});

实例2代码 和示例一区别在于实例2代码进行排序的dom元素内有子元素有属性,但整体来说区别不大。

扯淡环节:

在这里插入图片描述
作者介绍:
今年大学刚毕业,大学期间学的“软件技术”专业,(疫情原因和专业学的有点浅没有框架经验和项目经验)找的工作不太好,参加培训将大学期间的 html,css,js,jQuery又重新学习两遍,发现每一遍收获都不一样。希望自己发现的一些小方法能帮助你们,个人建议如果你是初学者或初级开发真的需要多看多练,看会后可以帮我点个赞哦!!!!

👍++;

如果是在校大学生即将要找工作,可以跟我聊一下我会跟你分享一下我踩过的坑。 希望各位读者,工作顺利,身体健康,保护头发!!!

经典语录:我的头发在桌上,在地下,在衣服上,电脑上,就是不再我头上。

联系方式:
微信:Congcong9987
QQ: 1160005720、89677498

  • 6
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,这个留言板的功能比较多,需要一步步实现。 首先,我们需要一个 HTML 页面来渲染留言板。以下是一个简单的 HTML 结构: ```html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>留言板</title> </head> <body> <h1>留言板</h1> <form> <label for="nameInput">姓名:</label> <input type="text" id="nameInput" name="nameInput" required><br> <label for="messageInput">留言内容:</label> <textarea id="messageInput" name="messageInput" required></textarea><br> <button type="submit">提交</button> </form> <ul id="messageList"> </ul> <script src="留言板.js"></script> </body> </html> ``` 在这个 HTML 页面中,我们使用了一个表单来让用户输入姓名和留言内容,并在表单提交时调用 JavaScript 函数来处理数据。同时,我们使用了一个无序列表来显示留言列表,每条留言包括留言内容和删除按钮。最后,我们引入了一个 JavaScript 文件来处理留言板的逻辑。 接下来,我们来编写 JavaScript 代码。 首先,我们需要定义一个数组来保存留言。因为我们需要支持本地存储,我们可以尝试从 localStorage 中读取之前的留言: ```javascript let messages = JSON.parse(localStorage.getItem('messages')) || []; ``` 如果 localStorage 中没有保存过留言,我们就创建一个空数组。否则,我们就从 localStorage 中读取留言。 接下来,我们需要定义一个函数来渲染留言列表。该函数将遍历留言数组并创建相应的 DOM 元素,然后将其添加到页面中: ```javascript function renderMessages() { const messageList = document.getElementById('messageList'); messageList.innerHTML = ''; messages.forEach((message, index) => { const li = document.createElement('li'); const p = document.createElement('p'); const button = document.createElement('button'); p.textContent = `${message.name}: ${message.content}`; button.textContent = '删除'; button.addEventListener('click', () => { messages.splice(index, 1); localStorage.setItem('messages', JSON.stringify(messages)); renderMessages(); }); li.appendChild(p); li.appendChild(button); messageList.appendChild(li); }); } ``` 在这个函数中,我们首先获取留言列表的 DOM 元素,并清空列表。然后,我们遍历留言数组,为每个留言创建一个列表(li),包括留言内容和删除按钮。在创建删除按钮时,我们添加了一个事件监听器,当按钮被点击时,它将从留言数组中删除相应的留言,并将更新后的数组存储到 localStorage 中,最后重新渲染留言列表。 接下来,我们需要定义一个函数来处理表单提交。该函数将获取表单数据并创建一个新的留言对象,然后将其添加到留言数组中,并存储到 localStorage 中: ```javascript function handleSubmit(event) { event.preventDefault(); const nameInput = document.getElementById('nameInput'); const messageInput = document.getElementById('messageInput'); const message = { name: nameInput.value, content: messageInput.value }; messages.push(message); localStorage.setItem('messages', JSON.stringify(messages)); nameInput.value = ''; messageInput.value = ''; renderMessages(); } ``` 在这个函数中,我们首先调用 `event.preventDefault()` 方法来阻止表单默认的提交行为。然后,我们获取姓名和留言内容的输入框,并将它们的值存储到一个新的留言对象中。接着,我们将新的留言对象添加到留言数组中,并将更新后的数组存储到 localStorage 中。最后,我们清空输入框的值,并重新渲染留言列表。 最后,我们需要定义一个函数来排序留言数组。该函数将根据留言的时间戳排序: ```javascript function sortMessages() { messages.sort((a, b) => b.timestamp - a.timestamp); } ``` 在这个函数中,我们使用了 Array 的 `sort()` 方法来排序留言数组。该方法接收一个比较函数作为参数,该函数将根据留言的时间戳(timestamp)来比较两条留言,并返回一个数字,表示它们的顺序。 现在,我们可以将这些函数集成到一起,编写一个简单的初始化函数: ```javascript function init() { sortMessages(); renderMessages(); const form = document.querySelector('form'); form.addEventListener('submit', handleSubmit); } init(); ``` 在这个函数中,我们首先调用 `sortMessages()` 函数来排序留言数组。然后,我们调用 `renderMessages()` 函数来渲染留言列表。最后,我们获取表单元素,并添加一个事件监听器,当用户提交表单时,它将调用 `handleSubmit()` 函数来处理数据。 现在我们的留言板就完成了。用户可以输入留言内容并提交留言,留言会显示在留言列表中。用户可以删除自己的留言。留言列表可以按时间排序,最新的留言在最上面。留言板支持本地存储,即用户关闭页面后再次打开仍然可以看到之前的留言。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值