[英]How to Hide HTML table row
I am trying to hide HTML table row using jQuery/JavaScript, My HTML table is rendering with JSON data 我正在尝试使用jQuery / JavaScript隐藏HTML表行,我的HTML表正在使用JSON数据呈现
I want to hide certain rows when the user selects multiple drop-down and clicks on go 当用户选择多个下拉菜单并单击转到时,我想隐藏某些行
salesType
as Cash
, Creditcard
, Swiggy
, Zomato
and more salesType
例如Cash
, Creditcard
, Swiggy
, Zomato
等 My code 我的密码
$(".checkbox-menu").on("change", "input[type='checkbox']", function() { $(this).closest("li").toggleClass("active", this.checked); var sList = ""; $('input[type=checkbox]').each(function() { if (this.checked) { sList += $(this).val() + "," } }); $("#To").val(sList.slice(0, -1)); }); $(document).on('click', '.allow-focus', function(e) { e.stopPropagation(); }); var cpy = [{ "Billdate": "2018-08-04", "Outlet": "JAYANAGAR", "Total": 518212, "Cash": 508161, "Creditcard": 0, "Coupon": 0, "Paytm": 0, "Credit": 0, "Swiggy": "10051", "uber Eats": "0", "Zomato": "0" }, { "Billdate": "2018-08-04", "Outlet": "MALLESHWARAM", "Total": 104801, "Cash": 102675, "Creditcard": 0, "Coupon": 0, "Paytm": 0, "Credit": 0, "Swiggy": "2126", "uber Eats": "0", "Zomato": "0" }, { "Billdate": "2018-08-04", "Outlet": "KOLAR", "Total": 138151, "Cash": 138151, "Creditcard": 0, "Coupon": 0, "Paytm": 0, "Credit": 0, "Swiggy": "0", "uber Eats": "0", "Zomato": "0" }, { "Billdate": "2018-08-05", "Outlet": "JAYANAGAR", "Total": 628358, "Cash": 608336, "Creditcard": 0, "Coupon": 0, "Paytm": 0, "Credit": 0, "Swiggy": "20022", "uber Eats": "0", "Zomato": "0" }, { "Billdate": "2018-08-05", "Outlet": "MALLESHWARAM", "Total": 115113, "Cash": 108903, "Creditcard": 0, "Coupon": 0, "Paytm": 0, "Credit": 0, "Swiggy": "6210", "uber Eats": "0", "Zomato": "0" }, { "Billdate": "2018-08-05", "Outlet": "KOLAR", "Total": 134107, "Cash": 134107, "Creditcard": 0, "Coupon": 0, "Paytm": 0, "Credit": 0, "Swiggy": "0", "uber Eats": "0", "Zomato": "0" }, { "Billdate": "2018-08-06", "Outlet": "JAYANAGAR", "Total": 177866, "Cash": 177866, "Creditcard": 0, "Coupon": 0, "Paytm": 0, "Credit": 0, "Swiggy": "0", "uber Eats": "0", "Zomato": "0" }, { "Billdate": "2018-08-06", "Outlet": "KOLAR", "Total": 66095, "Cash": 66095, "Creditcard": 0, "Coupon": 0, "Paytm": 0, "Credit": 0, "Swiggy": "0", "uber Eats": "0", "Zomato": "0" }, { "Billdate": "2018-08-07", "Outlet": "JAYANAGAR", "Total": 283124, "Cash": 277098, "Creditcard": 0, "Coupon": 0, "Paytm": 0, "Credit": 0, "Swiggy": "6026", "uber Eats": "0", "Zomato": "0" }, { "Billdate": "2018-08-07", "Outlet": "MALLESHWARAM", "Total": 58789, "Cash": 58214, "Creditcard": 0, "Coupon": 0, "Paytm": 0, "Credit": 0, "Swiggy": "575", "uber Eats": "0", "Zomato": "0" }, { "Billdate": "2018-08-07", "Outlet": "KOLAR", "Total": 67886, "Cash": 67886, "Creditcard": 0, "Coupon": 0, "Paytm": 0, "Credit": 0, "Swiggy": "0", "uber Eats": "0", "Zomato": "0" }] function getDataList(jsn) { var Billdate = []; var Outlet = []; var SalesType = []; Billdate = [...new Set(jsn.map(ele => ele.Billdate))]; Outlet = [...new Set(jsn.map(ele => ele.Outlet))]; for (let i in jsn[0]) { if (i !== 'Billdate' && i !== 'Outlet') { SalesType.push(i) } } return { Billdate, Outlet, SalesType } } function structureJSON(obj) { var arr = []; obj.Billdate.forEach((ele1, index1) => { obj.SalesType.forEach((ele, index) => { let row; if (index === 0) { row = { Billdate: ele1, SalesType: ele }; } else { row = { Billdate: "", SalesType: ele }; } obj.Outlet.forEach((ele2, index2) => { var selected = cpy.filter((ele3, index3) => { return ele3.Billdate === ele1 && ele3.Outlet == ele2 }); if (selected.length != 0) row[ele2] = selected[0][ele] else row[ele2] = "0"; }) arr.push(row) }) }) return arr; } var tableValue = structureJSON(getDataList(cpy)) addTable(tableValue) function addTable(tableValue) { var $tbl = $("<table />", { "class": "table table-striped table-bordered table-hover" }), $thd = $("<thead/>"), $tb = $("<tbody/>"), $trh = $("<tr/>", { "class": "text-center" }); $.each(Object.keys(tableValue[0]), function(_, val) { $("<th/>").html(val).appendTo($trh); }); $trh.appendTo($thd); $.each(tableValue, function(_, item) { $tr = $("<tr/>", { "class": "filterData" }); console.log(item.SalesType) // this one is sales type $.each(item, function(key, value) { if (isNaN(value)) { $("<td/>", { "class": "text-left" }).html(value).appendTo($tr); } else { $("<td/>", { "class": "text-right" }).html(value.toLocaleString('en-in')).appendTo($tr); } $tr.appendTo($tb); if (item.Billdate != "") { $tr.css("background-color", "#DFADF4"); } }); }); $tbl.append($thd).append($tb); $("#salesBreakupTable").html($tbl); }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js"></script> <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.2/js/bootstrap.min.js"></script> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.2/css/bootstrap.min.css"> <label for="subCategoryCode">Filter Data :</label> <div class="input-group" id="hideFilter"> <input type="text" class="form-control" aria-label="Text input with dropdown button" name="To" id="To" readonly> <div class="input-group-append"> <button class="btn btn-outline-secondary dropdown-toggle" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"></button> <ul class="dropdown-menu checkbox-menu allow-focus" aria-labelledby="dropdownMenu1"> <li><label> <input type="checkbox" value="Cash"> Cash </label></li> <li><label> <input type="checkbox" value="Creditcard"> Creditcard </label></li> <li><label> <input type="checkbox" value="Coupon"> Coupon </label></li> <li><label> <input type="checkbox" value="Credit"> Credit </label></li> <li><label> <input type="checkbox" value="Swiggy"> Swiggy </label></li> <li><label> <input type="checkbox" value="uber Eats"> uber Eats </label></li> <li><label> <input type="checkbox" value="Zomato"> Zomato </label></li> </ul> </div> <button type="button" class="commonButton" id="save"> <i class="fa fa-search"></i> Go </button> </div> <div align="Center" class="table table-responsive" id="commonDvScroll"> <table id="salesBreakupTable"></table> </div>
to export the table into excel I am using this code 导出表到Excel,我正在使用此代码
$("#export").click(function() {
var copyTable = $("#salesBreakupTable").clone(false).attr('id', '_copy_dailySales');
copyTable.insertAfter($("#dailySales"))
copyTable.find('display:none').remove()
copyTable.table2excel({
filename: "Daily Sales Report.xls"
});
copyTable.remove()
});
I am using this plugin for generating the excel from jQuery: <script src="https://cdn.rawgit.com/rainabba/jquery-table2excel/1.1.0/dist/jquery.table2excel.min.js"></script>
我正在使用此插件从jQuery生成Excel:
<script src="https://cdn.rawgit.com/rainabba/jquery-table2excel/1.1.0/dist/jquery.table2excel.min.js"></script>
but its exporting full table with hidden rows. 但是它导出带有隐藏行的完整表。
Try this: 尝试这个:
$(".checkbox-menu").on("change", "input[type='checkbox']", function() { $(this).closest("li").toggleClass("active", this.checked); var sList = ""; $('input[type=checkbox]').each(function() { if (this.checked) { sList += $(this).val() + "," } }); $("#To").val(sList.slice(0, -1)); }); $(document).on('click', '.allow-focus', function(e) { e.stopPropagation(); }); var cpy = [{ "Billdate": "2018-08-04", "Outlet": "JAYANAGAR", "Total": 518212, "Cash": 508161, "Creditcard": 0, "Coupon": 0, "Paytm": 0, "Credit": 0, "Swiggy": "10051", "uber Eats": "0", "Zomato": "0" }, { "Billdate": "2018-08-04", "Outlet": "MALLESHWARAM", "Total": 104801, "Cash": 102675, "Creditcard": 0, "Coupon": 0, "Paytm": 0, "Credit": 0, "Swiggy": "2126", "uber Eats": "0", "Zomato": "0" }, { "Billdate": "2018-08-04", "Outlet": "KOLAR", "Total": 138151, "Cash": 138151, "Creditcard": 0, "Coupon": 0, "Paytm": 0, "Credit": 0, "Swiggy": "0", "uber Eats": "0", "Zomato": "0" }, { "Billdate": "2018-08-05", "Outlet": "JAYANAGAR", "Total": 628358, "Cash": 608336, "Creditcard": 0, "Coupon": 0, "Paytm": 0, "Credit": 0, "Swiggy": "20022", "uber Eats": "0", "Zomato": "0" }, { "Billdate": "2018-08-05", "Outlet": "MALLESHWARAM", "Total": 115113, "Cash": 108903, "Creditcard": 0, "Coupon": 0, "Paytm": 0, "Credit": 0, "Swiggy": "6210", "uber Eats": "0", "Zomato": "0" }, { "Billdate": "2018-08-05", "Outlet": "KOLAR", "Total": 134107, "Cash": 134107, "Creditcard": 0, "Coupon": 0, "Paytm": 0, "Credit": 0, "Swiggy": "0", "uber Eats": "0", "Zomato": "0" }, { "Billdate": "2018-08-06", "Outlet": "JAYANAGAR", "Total": 177866, "Cash": 177866, "Creditcard": 0, "Coupon": 0, "Paytm": 0, "Credit": 0, "Swiggy": "0", "uber Eats": "0", "Zomato": "0" }, { "Billdate": "2018-08-06", "Outlet": "KOLAR", "Total": 66095, "Cash": 66095, "Creditcard": 0, "Coupon": 0, "Paytm": 0, "Credit": 0, "Swiggy": "0", "uber Eats": "0", "Zomato": "0" }, { "Billdate": "2018-08-07", "Outlet": "JAYANAGAR", "Total": 283124, "Cash": 277098, "Creditcard": 0, "Coupon": 0, "Paytm": 0, "Credit": 0, "Swiggy": "6026", "uber Eats": "0", "Zomato": "0" }, { "Billdate": "2018-08-07", "Outlet": "MALLESHWARAM", "Total": 58789, "Cash": 58214, "Creditcard": 0, "Coupon": 0, "Paytm": 0, "Credit": 0, "Swiggy": "575", "uber Eats": "0", "Zomato": "0" }, { "Billdate": "2018-08-07", "Outlet": "KOLAR", "Total": 67886, "Cash": 67886, "Creditcard": 0, "Coupon": 0, "Paytm": 0, "Credit": 0, "Swiggy": "0", "uber Eats": "0", "Zomato": "0" }] function getDataList(jsn) { var Billdate = []; var Outlet = []; var SalesType = []; Billdate = [...new Set(jsn.map(ele => ele.Billdate))]; Outlet = [...new Set(jsn.map(ele => ele.Outlet))]; for (let i in jsn[0]) { if (i !== 'Billdate' && i !== 'Outlet') { SalesType.push(i) } } return { Billdate, Outlet, SalesType } } function structureJSON(obj) { var arr = []; obj.Billdate.forEach((ele1, index1) => { obj.SalesType.forEach((ele, index) => { let row; if (index === 0) { row = { Billdate: ele1, SalesType: ele }; } else { row = { Billdate: "", SalesType: ele }; } obj.Outlet.forEach((ele2, index2) => { var selected = cpy.filter((ele3, index3) => { return ele3.Billdate === ele1 && ele3.Outlet == ele2 }); if (selected.length != 0) row[ele2] = selected[0][ele] else row[ele2] = "0"; }) arr.push(row) }) }) return arr; } var tableValue = structureJSON(getDataList(cpy)) addTable(tableValue) function addTable(tableValue) { var $tbl = $("<table />", { "class": "table table-striped table-bordered table-hover" }), $thd = $("<thead/>"), $tb = $("<tbody/>"), $trh = $("<tr/>", { "class": "text-center" }); $.each(Object.keys(tableValue[0]), function(_, val) { $("<th/>").html(val).appendTo($trh); }); $trh.appendTo($thd); $.each(tableValue, function(_, item) { $tr = $("<tr/>", { "class": "filterData" }); console.log(item.SalesType) // this one is sales type $.each(item, function(key, value) { if (isNaN(value)) { $("<td/>", { "class": "text-left" }).html(value).appendTo($tr); } else { $("<td/>", { "class": "text-right" }).html(value.toLocaleString('en-in')).appendTo($tr); } $tr.appendTo($tb); if (item.Billdate != "") { $tr.css("background-color", "#DFADF4"); } }); }); $tbl.append($thd).append($tb); $("#salesBreakupTable").html($tbl); } $("#save").on("click", function() { var selectedType = []; $.each($(".dropdown-menu input[type='checkbox']:checked"), function() { selectedType.push($(this).val()); }); $.each($("#salesBreakupTable tr.filterData td:nth-child(2)"), function() { if (jQuery.inArray($(this).text(), selectedType) == -1 && $(this).text() != "Total") { $(this).parent().css("display", "none"); $(this).parent().addClass("hide-data"); } else { $(this).parent().css("display", ""); $(this).parent().removeClass("hide-data"); } }); });
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js"></script> <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.2/js/bootstrap.min.js"></script> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.2/css/bootstrap.min.css"> <label for="subCategoryCode">Filter Data :</label> <div class="input-group" id="hideFilter"> <input type="text" class="form-control" aria-label="Text input with dropdown button" name="To" id="To" readonly> <div class="input-group-append"> <button class="btn btn-outline-secondary dropdown-toggle" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"></button> <ul class="dropdown-menu checkbox-menu allow-focus" aria-labelledby="dropdownMenu1"> <li><label> <input type="checkbox" value="Cash"> Cash </label></li> <li><label> <input type="checkbox" value="Creditcard"> Creditcard </label></li> <li><label> <input type="checkbox" value="Coupon"> Coupon </label></li> <li><label> <input type="checkbox" value="Credit"> Credit </label></li> <li><label> <input type="checkbox" value="Swiggy"> Swiggy </label></li> <li><label> <input type="checkbox" value="uber Eats"> uber Eats </label></li> <li><label> <input type="checkbox" value="Zomato"> Zomato </label></li> </ul> </div> <button type="button" class="commonButton" id="save"> <i class="fa fa-search"></i> Go </button> </div> <div align="Center" class="table table-responsive" id="commonDvScroll"> <table id="salesBreakupTable"></table> </div>
I have only added this part in your code: 我只在您的代码中添加了这一部分:
$("#save").on("click", function() {
var selectedType = [];
$.each($(".dropdown-menu input[type='checkbox']:checked"), function() {
selectedType.push($(this).val());
});
$.each($("#salesBreakupTable tr.filterData td:nth-child(2)"), function() {
if (jQuery.inArray($(this).text(), selectedType) == -1 && $(this).text() != "Total") {
$(this).parent().css("display", "none");
$(this).parent().addClass("hide-data");
} else {
$(this).parent().css("display", "");
$(this).parent().removeClass("hide-data");
}
});
});
I have updated your excel code as following: 我已经更新了您的Excel代码,如下所示:
$("#export").click(function() {
var copyTable = $("#salesBreakupTable").clone(false).attr('id', '_copy_dailySales');
copyTable.insertAfter($("#dailySales"));
copyTable.find('.hide-data').remove();
copyTable.table2excel({
filename: "Daily Sales Report.xls"
});
copyTable.remove();
});
display:none
can't be found using find()
in jQuery instead I have added the class and use that class in find()
which do the job. display:none
使用jQuery中的find()
,取而代之的是,我添加了该类,并在find()
使用了该类来完成这项工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.