js table ajax排序,js笔记四十四之表格排序,DOM映射及初识ajax

表格排序

li{

list-style: none;

}

#ul1{

width: 150px;

margin: 20px auto;

}

#ul1 li{

border-bottom: 1px solid #aaa;

}

  • 67
  • 64
  • 61
  • 69
  • 65

var oUl = document.getElementById("ul1");

var oLis = oUl.getElementsByTagName("li");

// 1. 先把元素集合类数组转换为数组

var ary = utils.listToArray(oLis);

// 2. 给数组进行排序: 按照每一个li中的内容大小进行排序

ary.sort(function(a,b){

return parseFloat(a.innerHTML) - parseFloat(b.innerHTML);

})

// 3. 按照ary中存储的最新顺序依次的把对应的li添加到页面中

var frg = document.createDocumentFragment();

for (var i = 0; i < ary.length; i++) {

frg.appendChild(ary[i])

}

oUl.appendChild(frg);

frg = null;

DOM映射机制

页面中的标签和js中获取到的元素对象(元素集合)是紧紧地绑定在一起的,页面中的HTML结构改变,js中不需要重新获取,集合里面的内容也会跟着自动改变

初识AJAX

// 想要操作谁,先要获取谁(table的获取方式)

var oTab = document.getElementById("tab");

// 获取表格中的头(表格头唯一)

var tHead = oTab.tHead;

// tHead.rows[0] -> 获取表格中头一行

// tHead.rows[0].cells -> 获取表格头一行中的一列

var oThs = tHead.rows[0].cells;

// 获取表格中内容(表格体,表格体不唯一)[bodies: body的复数形式]

var tBody = oTab.tBodies[0]

// 获取表格中的每一行

var oRows = tBody.rows

// 1. 首先创建一个Ajax对象

var xhr = new XMLHttpRequest();

// 2. 打开需要请求数据的那个文件地址

xhr.open("get", "data.txt", true) // true 异步请求

// 3. 监听请求状态

xhr.onreadystatechange = function (){

if(xhr.readyState === 4 && /^2\d{2}$/.test(xhr.status)){

var val = xhr.responseText;

console.log(val)

}

}

// 4. 发送请求

xhr.send(null);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的示例,可以实现在表格中拖拽行进行排序: HTML代码: ``` <table id="myTable"> <thead> <tr> <th>名称</th> <th>价格</th> </tr> </thead> <tbody> <tr> <td>商品1</td> <td>100</td> </tr> <tr> <td>商品2</td> <td>200</td> </tr> <tr> <td>商品3</td> <td>150</td> </tr> </tbody> </table> ``` JavaScript代码: ``` // 获取表格元素 var table = document.getElementById("myTable"); // 获取表格中的tbody元素 var tbody = table.getElementsByTagName("tbody")[0]; // 获取tbody中的所有行 var rows = tbody.getElementsByTagName("tr"); // 给每一行绑定拖拽事件 for (var i = 0; i < rows.length; i++) { rows[i].draggable = true; rows[i].addEventListener("dragstart", function(e) { // 设置拖拽数据 e.dataTransfer.setData("Text", e.target.id); }); rows[i].addEventListener("dragover", function(e) { // 阻止默认事件 e.preventDefault(); }); rows[i].addEventListener("drop", function(e) { // 阻止默认事件 e.preventDefault(); // 获取拖拽数据 var data = e.dataTransfer.getData("Text"); // 如果拖拽目标不是自己,则交换位置 if (e.target.tagName == "TR" && e.target.id != data) { var target = e.target.parentNode; var source = document.getElementById(data).parentNode; target.insertBefore(document.getElementById(data), e.target); source.insertBefore(e.target, document.getElementById(data)); } }); } ``` 这段代码会给表格中的每一行绑定拖拽事件,当用户拖拽其中一行时,会将该行的id设置为拖拽数据,在拖拽过程中阻止默认事件,当用户将行拖拽到另一行上方时,会交换这两行的位置。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值