
获取hash链接(hash片段)的参数
URL 结构:URL 由多个部分组成,包括协议(如 http
或 https
)、主机名(如 www.example.com
)、端口号(可选,默认为 80 或 443)、路径(如 /path/to/page
)、查询字符串(如 ?id=123&name=John
)以及哈希片段(如 #section2
)。
window.location.hash
通过 window.location.hash
属性来访问当前 URL 的哈希片段。这个属性返回包括 #
符号的哈希部分,例如 #section2
。
获取hash片段中的参数的方法
1 | function getHashParams() { |
例子
链接1:
1
http://127.0.0.1:5500/hash.html#?id=2&name=winney
输出结果:
1
2
3
4#?id=2&name=winney
2
winney链接2:
1
http://127.0.0.1:5500/hash.html#/?id=2&name=winney
输出结果:
1
2
3
4#/?id=2&name=winney
/
2
winney链接3:
1
http://127.0.0.1:5500/hash.html#/test/text.html?id=2&name=winney
输出结果:
1
2
3
4#/test/text.html?id=2&name=winney
/test/text.html
2
winney
注意:查询参数前需要加上
?
号
getHashParams()
方法适合以上3种情况的hash链接获取参数
如果不使用params.id
这种方法获取参数对应的值,也可以使用解构赋值获取需要的参数:
1 | const { id, name } = params; |
根据参数名获取对应的值
getHashParams()
方法是一次性返回全部参数。如果想通过传参数名来获取参数对应的值,可以给getHashParams()
方法添加参数
1 | /* |
链接:
1 | http://127.0.0.1:5500/hash.html#/test/text.html?id=2&name=winney |
结果:
1 | 2 |
layui表格实现全选所有页面数据的功能
layui表格中的复选框
在实现全选所有页面的数据之前,先看一下layui表格中的复选框能实现的功能。
HTML:
1 | <table id="testTable" lay-filter="testTable"></table> |
JavaScript:
1 | layui.use(['table', 'jquery', 'form'], function () { |
在表格中,添加复选框:在cols
中添加{ checkbox: true }
或{ type:'checkbox' }
获取选中行的数据:table.checkStatus('testTable').data;
这里使用sort,是为了方便看数据,如果没有这个要求,可以不加。
如果需求中,按表头的复选框进行全选的时候需要获取到所有页面的数据。根据上面的展示,layui表格中默认的复选框的全选,获取不到所有页面的数据。
layui表格中表头的复选框实现全选所有页面的数据-多次操作
完整代码:
1 | layui.use(['table', 'jquery', 'form'], function () { |
这里代码没有进行优化和封装,是为了大家更方便地看清它的逻辑
难点
:
全选时,怎么去记住不同页面中的数据,如何实现追加数据和减去数据的过程。
刚好在done
中可以获取到渲染当前页的数据。
1 | done: function (res) { |
缺点与不足
:需要每页都要点一次表头的全选复选框,不能一步到位。
layui表格中表头的复选框实现全选所有页面的数据-一次全选
使用渲染表格时的templet
和title
,手动创建复选框,不使用table默认添加复选框的方法({ type:'checkbox' })
添加复选框。
完整代码:
1 | layui.use(['table', 'jquery', 'form'], function () { |
说明
:
获取页面当前页码的方法
adTable.getPageCur
,大家可以根据自己的实际情况来实现。因为这里有多个表格,所以我放在pages对象中,不同的表格,根据表格名称来缓存对应的页码。难点和关键代码:
1
2
3
4
5{
field: 'checkbox', title: '<input type="checkbox" id="checkAll" lay-filter="checkAll" lay-skin="primary">', width: 66, templet: function (res) {
return '<input type="checkbox" class="rowCheck" data-id="' + res.id + '" lay-filter="rowCheck" lay-skin="primary">';
}
}title
属性一定要配置。.rowCheck
一定要记得配置对应的id:data-id="' + res.id + '"
如果有问题,可以留言联系。