Table 在 Javascript - hide/show 列中
Table in Javascript - hide/show columns
我已经搜索了好几个小时,但没能找到像我这样创建的 table,其中有 hide/show 个实例 - 我试过使用一些标准的 hide/show 对于标准 HTML tables 但是它并没有像我需要的那样转换为工作。
我在 JS 中创建了一个 table,它从 json 加载数据,看起来像:
var output = "<table class = sample>",
tableHeadings = "<thead>" +
//set column names
"<tr>" +
"<th></th>" +
"<th><u>Name:</u></th>" +
"<th><u>Address:</u></th>" +
"<th><u>City:</u></th>" +
"<th><u>State:</u></th>" +
"<th><u>Phone Number:</u></th>" +
"<th><u>PO:</u></th>" +
"<th><u>Stuff:</u></th>" +
"<th><u>Stuff:</u></th>" +
"<th><u>Stuff:</u></th>" +
"<th><u>Stuff:</u></th>" +
"<th><u>Stuff:</u></th>" +
"</tr>" +
"</thead>";
output += tableHeadings;
output += "<td>"+'<a href="#" onclick="javascript:displayInfobox(' + (i) + ');">' + results[i]["Business Name"] +'<\/a>' + "</td>" +
"<td>" + results[i]["Address"] + "</td>" +
"<td><center>" + results[i]["City"] + "</center></td>" +
"<td><center>" + results[i]["StateListing"] + "</center></td>";
document.getElementById("placeholder").innerHTML = output;
我想做的是 hide/show 使用 button/checkbox 地址列。我已经尝试使用 style.display 以及 jquery 中的 .hide/.show。我尝试的所有操作都会隐藏第一个条目,但仍会显示之后每个条目的地址。
我需要能够隐藏显示的所有条目的命令地址信息。
您可以使用 child select 或:
$("td:nth-child(2)").hide()
或者在你的地址td中加一个class,并且select所有的c class:
<td class='c'>
$(".c").hide()
据我了解,您想要 hide/show 列,但我不是 100% 确定。下一个代码隐藏和显示 table 上的列:
<html>
<head>
<title>Show-Hide</title>
<script type="text/javascript">
function hide ( column ) {
var tbl = document.getElementById( "tbl" );
var i;
for ( i = 0; i < tbl.rows.length; i++ )
tbl.rows[ i ].cells[ column ].style.visibility = "hidden";
}
function restore () {
var tbl = document.getElementById( "tbl" );
var i;
var j;
for ( i = 0; i < tbl.rows.length; i++ )
for ( j = 0; j < tbl.rows[ i ].cells.length; j++ )
tbl.rows[ i ].cells[ j ].style.visibility = "visible";
}
</script>
</head>
<body>
<table id="tbl">
<tr>
<td><button onclick="hide(0)">Hide</button></td>
<td><button onclick="hide(1)">Hide</button></td>
<td><button onclick="hide(2)">Hide</button></td>
</tr>
<tr>
<td>111</td>
<td>222</td>
<td>333</td>
</tr>
<tr>
<td>444</td>
<td>555</td>
<td>666</td>
</tr>
<tr>
<td>777</td>
<td>888</td>
<td>999</td>
</tr>
</table>
<br/>
<button onclick="restore();">Restore columns</button>
</body>
</html>
创建一个文本文件,根据需要命名,但使用扩展名 HTML,复制并粘贴之前的代码,然后在浏览器中打开它。如果不是您要找的,我们可以解决。
如果你想完全消失该列,而不是
tbl.rows[ i ].cells[ column ].style.visibility = "hidden"; // or "visible".
使用
tbl.rows[ i ].cells[ column ].style.display = "none"; // or "table-cell".
您可以做的是在创建 table 时对每个 td 应用 class。在隐藏特定列时,您可以根据 class 名称选择元素并将其隐藏。
Here's is the fiddle, with an example
// Using Javascript
function hideAddress()
{
var elems = document.getElementsByClassName("addr");
for(var i = 0; i<elems.length; i++) {
elems[i].style.display = "none";
}
}
// Using Jquery
$("#hideAddr").click(function() {
$(".addr").hide();
});
希望对您有所帮助!
这是一个有效的示例。我使用 JQuery 只是为了创建 table 但该函数在没有它的情况下也能正常工作。
http://plnkr.co/edit/MWlXNRhAAzDjPPf42a19?p=info
$(function() {
var results = [];
results.push({
'Business Name': 'Bus1',
'Address': 1234,
'City': 'test',
'StateListing': 'CA'
});
results.push({
'Business Name': 'Bus2',
'Address': 5678,
'City': 'test',
'StateListing': 'CA'
});
results.push({
'Business Name': 'Bus3',
'Address': 9120,
'City': 'test',
'StateListing': 'CA'
});
function setupTable() {
var output = "<table class = sample>",
tableHeadings = "<thead>" +
//set column names
"<tr>" +
"<th><u>Name:</u></th>" +
"<th name='addressCol'><u>Address:</u></th>" +
"<th><u>City:</u></th>" +
"<th><u>State:</u></th>" +
"<th><u>Phone Number:</u></th>" +
"<th><u>PO:</u></th>" +
"<th><u>Stuff:</u></th>" +
"<th><u>Stuff:</u></th>" +
"<th><u>Stuff:</u></th>" +
"<th><u>Stuff:</u></th>" +
"<th><u>Stuff:</u></th>" +
"</tr>" +
"</thead>";
output += tableHeadings;
for (var i = 0; i < results.length; i++) {
output += "<tr><td>" + '<a href="#" onclick="javascript:displayInfobox(' + (i) + ');">' + results[i]["Business Name"] + '<\/a>' + "</td>" +
"<td name='addressCol'>" + results[i]["Address"] + "</td>" +
"<td><center>" + results[i]["City"] + "</center></td>" +
"<td><center>" + results[i]["StateListing"] + "</center></td></tr>";
}
document.getElementById("placeholder").innerHTML = output;
}
setupTable();
});
function hideFunction() {
var items = document.getElementsByName('addressCol');
for (var i = 0; i < items.length; i++) {
items[i].style.display = 'none';
}
}
我已经搜索了好几个小时,但没能找到像我这样创建的 table,其中有 hide/show 个实例 - 我试过使用一些标准的 hide/show 对于标准 HTML tables 但是它并没有像我需要的那样转换为工作。
我在 JS 中创建了一个 table,它从 json 加载数据,看起来像:
var output = "<table class = sample>",
tableHeadings = "<thead>" +
//set column names
"<tr>" +
"<th></th>" +
"<th><u>Name:</u></th>" +
"<th><u>Address:</u></th>" +
"<th><u>City:</u></th>" +
"<th><u>State:</u></th>" +
"<th><u>Phone Number:</u></th>" +
"<th><u>PO:</u></th>" +
"<th><u>Stuff:</u></th>" +
"<th><u>Stuff:</u></th>" +
"<th><u>Stuff:</u></th>" +
"<th><u>Stuff:</u></th>" +
"<th><u>Stuff:</u></th>" +
"</tr>" +
"</thead>";
output += tableHeadings;
output += "<td>"+'<a href="#" onclick="javascript:displayInfobox(' + (i) + ');">' + results[i]["Business Name"] +'<\/a>' + "</td>" +
"<td>" + results[i]["Address"] + "</td>" +
"<td><center>" + results[i]["City"] + "</center></td>" +
"<td><center>" + results[i]["StateListing"] + "</center></td>";
document.getElementById("placeholder").innerHTML = output;
我想做的是 hide/show 使用 button/checkbox 地址列。我已经尝试使用 style.display 以及 jquery 中的 .hide/.show。我尝试的所有操作都会隐藏第一个条目,但仍会显示之后每个条目的地址。
我需要能够隐藏显示的所有条目的命令地址信息。
您可以使用 child select 或:
$("td:nth-child(2)").hide()
或者在你的地址td中加一个class,并且select所有的c class:
<td class='c'>
$(".c").hide()
据我了解,您想要 hide/show 列,但我不是 100% 确定。下一个代码隐藏和显示 table 上的列:
<html>
<head>
<title>Show-Hide</title>
<script type="text/javascript">
function hide ( column ) {
var tbl = document.getElementById( "tbl" );
var i;
for ( i = 0; i < tbl.rows.length; i++ )
tbl.rows[ i ].cells[ column ].style.visibility = "hidden";
}
function restore () {
var tbl = document.getElementById( "tbl" );
var i;
var j;
for ( i = 0; i < tbl.rows.length; i++ )
for ( j = 0; j < tbl.rows[ i ].cells.length; j++ )
tbl.rows[ i ].cells[ j ].style.visibility = "visible";
}
</script>
</head>
<body>
<table id="tbl">
<tr>
<td><button onclick="hide(0)">Hide</button></td>
<td><button onclick="hide(1)">Hide</button></td>
<td><button onclick="hide(2)">Hide</button></td>
</tr>
<tr>
<td>111</td>
<td>222</td>
<td>333</td>
</tr>
<tr>
<td>444</td>
<td>555</td>
<td>666</td>
</tr>
<tr>
<td>777</td>
<td>888</td>
<td>999</td>
</tr>
</table>
<br/>
<button onclick="restore();">Restore columns</button>
</body>
</html>
创建一个文本文件,根据需要命名,但使用扩展名 HTML,复制并粘贴之前的代码,然后在浏览器中打开它。如果不是您要找的,我们可以解决。
如果你想完全消失该列,而不是
tbl.rows[ i ].cells[ column ].style.visibility = "hidden"; // or "visible".
使用
tbl.rows[ i ].cells[ column ].style.display = "none"; // or "table-cell".
您可以做的是在创建 table 时对每个 td 应用 class。在隐藏特定列时,您可以根据 class 名称选择元素并将其隐藏。
Here's is the fiddle, with an example
// Using Javascript
function hideAddress()
{
var elems = document.getElementsByClassName("addr");
for(var i = 0; i<elems.length; i++) {
elems[i].style.display = "none";
}
}
// Using Jquery
$("#hideAddr").click(function() {
$(".addr").hide();
});
希望对您有所帮助!
这是一个有效的示例。我使用 JQuery 只是为了创建 table 但该函数在没有它的情况下也能正常工作。
http://plnkr.co/edit/MWlXNRhAAzDjPPf42a19?p=info
$(function() {
var results = [];
results.push({
'Business Name': 'Bus1',
'Address': 1234,
'City': 'test',
'StateListing': 'CA'
});
results.push({
'Business Name': 'Bus2',
'Address': 5678,
'City': 'test',
'StateListing': 'CA'
});
results.push({
'Business Name': 'Bus3',
'Address': 9120,
'City': 'test',
'StateListing': 'CA'
});
function setupTable() {
var output = "<table class = sample>",
tableHeadings = "<thead>" +
//set column names
"<tr>" +
"<th><u>Name:</u></th>" +
"<th name='addressCol'><u>Address:</u></th>" +
"<th><u>City:</u></th>" +
"<th><u>State:</u></th>" +
"<th><u>Phone Number:</u></th>" +
"<th><u>PO:</u></th>" +
"<th><u>Stuff:</u></th>" +
"<th><u>Stuff:</u></th>" +
"<th><u>Stuff:</u></th>" +
"<th><u>Stuff:</u></th>" +
"<th><u>Stuff:</u></th>" +
"</tr>" +
"</thead>";
output += tableHeadings;
for (var i = 0; i < results.length; i++) {
output += "<tr><td>" + '<a href="#" onclick="javascript:displayInfobox(' + (i) + ');">' + results[i]["Business Name"] + '<\/a>' + "</td>" +
"<td name='addressCol'>" + results[i]["Address"] + "</td>" +
"<td><center>" + results[i]["City"] + "</center></td>" +
"<td><center>" + results[i]["StateListing"] + "</center></td></tr>";
}
document.getElementById("placeholder").innerHTML = output;
}
setupTable();
});
function hideFunction() {
var items = document.getElementsByName('addressCol');
for (var i = 0; i < items.length; i++) {
items[i].style.display = 'none';
}
}