我的表中有一个名为查看结果的表我的db.it有3列..我想在14天后隐藏它的第3列'Apply Recorrection'。例如:表显示日期是2012-12-01。14天后如何才能我隐藏了第3列(参考此表的学生将无法看到2012-12-15表格。)....这是我的示例代码:
<table border=1>
<tr><th>Student ID</th><th>Grade</th><th>Apply Recorrection</th>
<tr><td>RS211</td><td>C</td><td>Click Here</td></tr>
<tr><td>RS221</td><td>B</td><td>Click Here</td></tr>
<tr><td>RS251</td><td>F</td><td>Click Here</td></tr>
</table>
JS代码:
$("table td:nth-child(3)").hide();
演示代码链接:http://jsfiddle.net/ELRpv/4/
帮我编辑这段代码来完成我的任务......
答案 0 :(得分:1)
三件事:
1)你想要“关闭”第一行中的TR元素。
2)您也可以在第一行中定位TH元素:
$("table td:nth-child(3), table th:nth-child(3)").hide();
3)如果您可以将“显示日期”添加为数据日期属性,那么使用某些JS可以计算今天和显示日期之间的差异。
<table border=1 data-date="2012-12-01">
<tr><th>Student ID</th><th>Grade</th><th>Apply Recorrection</th></tr>
<tr><td>RS211</td><td>C</td><td>Click Here</td></tr>
<tr><td>RS221</td><td>B</td><td>Click Here</td></tr>
<tr><td>RS251</td><td>F</td><td>Click Here</td></tr>
</table>
// Today
var time_now = $.now();
// The date set in the table's data-date.
var date_start = new Date($('table').attr('data-date'));
// The table's date turned into microseconds.
var time_start = date_start.getTime();
// The difference in days.
var date_difference = parseInt((time_now - time_start ) / (86400000));
// If the date difference is greater than X, hide the column.
if(date_difference > 12){
$("table td:nth-child(3), table th:nth-child(3)").hide();
}
这里的工作示例:
答案 1 :(得分:1)
这应该适合你所要求的。您只需要在表元素
的数据日期attr中设置开始日期<table border=1 data-date="12/01/2012">
<tr><th>Student ID</th><th>Grade</th><th>Apply Recorrection</th>
<tr><td>RS211</td><td>C</td><td>Click Here</td></tr>
<tr><td>RS221</td><td>B</td><td>Click Here</td></tr>
<tr><td>RS251</td><td>F</td><td>Click Here</td></tr>
</table>
var baseDate = new Date($("table").data('date'));
var expireDate = new Date().setDate(baseDate.getDate() + 14);
var curDate = new Date();
if (curDate > expireDate)
$("table td:nth-child(3)").hide();
答案 2 :(得分:0)
HTML:
<table border=1>
<tr><td>Student ID</td><td>Grade</td><td>Apply Recorrection</td></tr>
<tr><td>RS211</td><td>C</td><td>Click Here</td></tr>
<tr><td>RS221</td><td>B</td><td>Click Here</td></tr>
<tr><td>RS251</td><td>F</td><td>Click Here</td></tr>
</table>
JS:
$(document).ready(function(){
$('table').find('tr').each(function(){
$(this).find('td').eq(2).hide();
});
});
答案 3 :(得分:0)
我添加了辅助函数,因此您可以传入表格和列号来隐藏
function hideColumn($table, columnNumber){
$table.find('td:nth-child('+columnNumber+'), th:nth-child('+columnNumber+'),').hide();
}
function showColumn($table, columnNumber){
$table.find('td:nth-child('+columnNumber+'), th:nth-child('+columnNumber+'),').show();
}
var $myTable = $('table');
hideColumn($myTable, 3);
更新了小提琴:http://jsfiddle.net/ELRpv/5/
答案 4 :(得分:0)
最好的方法是在服务器端执行此操作。 - 如果dayOfMonth(日期)&gt; 14:不写第3列。
如果您在HTML上编写第3列并在页面加载后隐藏或删除它,有很多方法可以在任何人想要的情况下仍然看到第3列的HTML。
要在浏览器上执行此操作,您需要依赖服务器日期而不是客户端日期,因为用户可以更改服务器日期。
正如蒂姆建议的那样,您可以将服务器日期设置为任何DOM元素的属性值,以使日期可用于js。
<table border=1 data-date="12/01/2012">
如果日期超过14
,请使用以下代码隐藏列var dt=new Date($("table").data('date'));
if(dt.getDate()>14)
$("table td:nth-child(3)").remove();
如果您有任何问题,请与我们联系。