Javascript 如何组合分页脚本和筛选脚本?
我有一个正在工作的分页脚本,还有我的筛选脚本。不幸的是,一旦我过滤,它会过滤所有的搜索项目,并且超过了分页的最大限制,这应该是事实 我需要我的分页和过滤脚本一起工作。我有样品台供你们使用 这是我的整个剧本:Javascript 如何组合分页脚本和筛选脚本?,javascript,Javascript,我有一个正在工作的分页脚本,还有我的筛选脚本。不幸的是,一旦我过滤,它会过滤所有的搜索项目,并且超过了分页的最大限制,这应该是事实 我需要我的分页和过滤脚本一起工作。我有样品台供你们使用 这是我的整个剧本: document.getElementById("myInput").onkeyup = function() { filterBar() }; function filterBar() { var input, filter, ta
document.getElementById("myInput").onkeyup = function() {
filterBar()
};
function filterBar() {
var input, filter, table, tr, td, i;
input = document.getElementById("myInput");
filter = input.value.toUpperCase();
table = document.getElementById("myTable");
tr = table.getElementsByTagName("tr");
for (i = 0; i < tr.length; i++) {
td = tr[i].getElementsByTagName("td")[0];
if (td) {
if (td.innerHTML.toUpperCase().indexOf(filter) > -1) {
tr[i].style.disp lay = "";
} else {
tr[i].style.display = "none";
}
}
}
};
paginateTable();
function paginateTable() {
var currentPage = 0;
var numPerPage = 10;
var table = $('#myTable');
table.find('tbody tr').hide().slice(currentPage * numPerPage,
(currentPage + 1) * numPerPage).show();
var numRows = table.find('tbody tr').length;
var numPages = Math.ceil(numRows / numPerPage);
table.bind('repaginate', function() {
table.find('tbody tr').hide().slice(currentPage * numPerPage,
(currentPage + 1) * numPerPage).show();
$('#totalEntries').text(numRows);
if (numRows == 0) {
$('#minEntry').text(numRows);
} else {
$('#minEntry').text((currentPage * 10) + 1);
}
if (currentPage == 0 || numRows == 0) {
$('.previousPage').hide();
} else {
$('.previousPage').show();
$('.previousPage').data('page', currentPage - 1);
}
if (currentPage == (numPages - 1) || numRows == 0) {
$('.nextPage').hide();
$('#maxEntry').text(numRows);
} else {
$('.nextPage').show();
$('.nextPage').data('page', currentPage + 1);
if (numRows < 10) {
$('#maxEntry').text(numRows);
} else {
$('#maxEntry').text((currentPage * 10) + 10);
}
}
$('#currentPage').text(currentPage + 1);
});
table.trigger('repaginate');
$('.previousPage, .nextPage').click(function(e) {
e.preventDefault();
currentPage = $(this).data('page');
table.trigger('repaginate');
});
}
document.getElementById(“myInput”).onkeyup=function(){
过滤器()
};
函数过滤器(){
var输入、过滤器、表格、tr、td、i;
输入=document.getElementById(“myInput”);
filter=input.value.toUpperCase();
table=document.getElementById(“myTable”);
tr=table.getElementsByTagName(“tr”);
对于(i=0;i-1){
tr[i].style.disp lay=“”;
}否则{
tr[i].style.display=“无”;
}
}
}
};
分页表();
函数分页表(){
var-currentPage=0;
var numPerPage=10;
变量表=$(“#我的表”);
table.find('tbody tr').hide().slice(当前页面*numPerPage,
(当前页面+1)*numPerPage.show();
var numRows=table.find('tbody tr').length;
var numPages=Math.ceil(numRows/numPerPage);
table.bind('repaginate',function(){
table.find('tbody tr').hide().slice(当前页面*numPerPage,
(当前页面+1)*numPerPage.show();
$('#totalEntries').text(numRows);
如果(numRows==0){
$(#minEntry')。文本(numRows);
}否则{
$(#minEntry')。文本((当前页*10)+1);
}
如果(当前页面==0 | | numRows==0){
$('.previousPage').hide();
}否则{
$('.previousPage').show();
$('.previousPage')。数据('page',currentPage-1);
}
如果(currentPage==(numPages-1)| | numRows==0){
$('.nextPage').hide();
$('#maxEntry').text(numRows);
}否则{
$('.nextPage').show();
$('.nextPage')。数据('第页',当前页+1);
如果(numRows<10){
$('#maxEntry').text(numRows);
}否则{
$('#maxEntry').text((当前页*10)+10);
}
}
$('#currentPage')。文本(currentPage+1);
});
表.触发器(“重新分页”);
$('.previousPage、.nextPage')。单击(函数(e){
e、 预防默认值();
currentPage=$(this).data('page');
表.触发器(“重新分页”);
});
}
这是我的带有分页按钮的示例表
过滤器:
英语
其他语言
地位
阿尔弗雷德·福特基斯特
德国
28
伯格伦兹蛇
瑞典
28
岛屿贸易
英国
28
科尼格利希·埃森
德国
28
笑巴克斯酒窖
加拿大
28
马加兹尼营养不良
意大利
28
北/南
英国
28
巴黎特色酒店
法国
28
阿尔弗雷德·福特基斯特
德国
28
伯格伦兹蛇
瑞典
28
岛屿贸易
英国
28
科尼格利希·埃森
德国
28
笑巴克斯酒窖
加拿大
28
马加兹尼营养不良
意大利
28
北/南
英国
28
巴黎特色酒店
法国
28
阿尔弗雷德·福特基斯特
德国
28
伯格伦兹蛇
瑞典
28
岛屿贸易
英国
28
科尼格利希·埃森
德国
28
笑巴克斯酒窖
加拿大
28
马加兹尼营养不良
意大利
28
北/南
英国
28
巴黎特色酒店
法国
28
阿尔弗雷德·福特基斯特
德国
28
伯格伦兹蛇
瑞典
28
岛屿贸易
英国
28
科尼格利希·埃森
德国
28
笑巴克斯酒窖
加拿大
28
马加兹尼营养不良
意大利
28
北/南
英国
28
巴黎特色酒店
法国
28
阿尔弗雷德·福特基斯特
德国
28
伯格伦兹蛇
瑞典
28
岛屿贸易
英国
<table id="myTable">
<thead>
<tr>
<th style="width: 60%;">English</th>
<th style="width: 40%;">Other Language</th>
<th style="width: 30%;">Status</th>
</tr>
</thead>
<tbody>
<tr>
<td>Alfreds Futterkiste</td>
<td>Germany</td>
<td>28</td>
</tr>
<tr>
<td>Berglunds snabbkop</td>
<td>Sweden</td>
<td>28</td>
</tr>
<tr>
<td>Island Trading</td>
<td>UK</td>
<td>28</td>
</tr>
<tr>
<td>Koniglich Essen</td>
<td>Germany</td>
<td>28</td>
</tr>
<tr>
<td>Laughing Bacchus Winecellars</td>
<td>Canada</td>
<td>28</td>
</tr>
<tr>
<td>Magazzini Alimentari Riuniti</td>
<td>Italy</td>
<td>28</td>
</tr>
<tr>
<td>North/South</td>
<td>UK</td>
<td>28</td>
</tr>
<tr>
<td>Paris specialites</td>
<td>France</td>
<td>28</td>
</tr>
<tr>
<td>Alfreds Futterkiste</td>
<td>Germany</td>
<td>28</td>
</tr>
<tr>
<td>Berglunds snabbkop</td>
<td>Sweden</td>
<td>28</td>
</tr>
<tr>
<td>Island Trading</td>
<td>UK</td>
<td>28</td>
</tr>
<tr>
<td>Koniglich Essen</td>
<td>Germany</td>
<td>28</td>
</tr>
<tr>
<td>Laughing Bacchus Winecellars</td>
<td>Canada</td>
<td>28</td>
</tr>
<tr>
<td>Magazzini Alimentari Riuniti</td>
<td>Italy</td>
<td>28</td>
</tr>
<tr>
<td>North/South</td>
<td>UK</td>
<td>28</td>
</tr>
<tr>
<td>Paris specialites</td>
<td>France</td>
<td>28</td>
</tr>
<tr>
<td>Alfreds Futterkiste</td>
<td>Germany</td>
<td>28</td>
</tr>
<tr>
<td>Berglunds snabbkop</td>
<td>Sweden</td>
<td>28</td>
</tr>
<tr>
<td>Island Trading</td>
<td>UK</td>
<td>28</td>
</tr>
<tr>
<td>Koniglich Essen</td>
<td>Germany</td>
<td>28</td>
</tr>
<tr>
<td>Laughing Bacchus Winecellars</td>
<td>Canada</td>
<td>28</td>
</tr>
<tr>
<td>Magazzini Alimentari Riuniti</td>
<td>Italy</td>
<td>28</td>
</tr>
<tr>
<td>North/South</td>
<td>UK</td>
<td>28</td>
</tr>
<tr>
<td>Paris specialites</td>
<td>France</td>
<td>28</td>
</tr>
<tr>
<td>Alfreds Futterkiste</td>
<td>Germany</td>
<td>28</td>
</tr>
<tr>
<td>Berglunds snabbkop</td>
<td>Sweden</td>
<td>28</td>
</tr>
<tr>
<td>Island Trading</td>
<td>UK</td>
<td>28</td>
</tr>
<tr>
<td>Koniglich Essen</td>
<td>Germany</td>
<td>28</td>
</tr>
<tr>
<td>Laughing Bacchus Winecellars</td>
<td>Canada</td>
<td>28</td>
</tr>
<tr>
<td>Magazzini Alimentari Riuniti</td>
<td>Italy</td>
<td>28</td>
</tr>
<tr>
<td>North/South</td>
<td>UK</td>
<td>28</td>
</tr>
<tr>
<td>Paris specialites</td>
<td>France</td>
<td>28</td>
</tr>
<tr>
<td>Alfreds Futterkiste</td>
<td>Germany</td>
<td>28</td>
</tr>
<tr>
<td>Berglunds snabbkop</td>
<td>Sweden</td>
<td>28</td>
</tr>
<tr>
<td>Island Trading</td>
<td>UK</td>
<td>28</td>
</tr>
<tr>
<td>Koniglich Essen</td>
<td>Germany</td>
<td>28</td>
</tr>
<tr>
<td>Laughing Bacchus Winecellars</td>
<td>Canada</td>
<td>28</td>
</tr>
<tr>
<td>Magazzini Alimentari Riuniti</td>
<td>Italy</td>
<td>28</td>
</tr>
<tr>
<td>North/South</td>
<td>UK</td>
<td>28</td>
</tr>
<tr>
<td>Paris specialites</td>
<td>France</td>
<td>28</td>
</tr>
</tbody>
</table>
<div class="table-pagination">
<div class="page-control">
Showing <span id="minEntry">0</span> to <span id="maxEntry">0</span>
of <span id="totalEntries">0</span> entries
<ul class="pagination">
<li><a href="#" class="previousPage">Newer</a></li>
<li><a href="#" class="previousPage"><</a></li>
<li><a href="#" id="currentPage" class="page-number">1</a></li>
<li><a href="#" class="nextPage">></a></li>
<li><a href="#" class="nextPage">Older</a></li>
</ul>
</div>
</div>
</ul>