在特定日期使用jquery隐藏表列

时间:2012-12-13 05:27:46

标签: javascript php jquery html-table

我的表中有一个名为查看结果的表我的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/

帮我编辑这段代码来完成我的任务......

5 个答案:

答案 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();    
}

这里的工作示例:

http://jsfiddle.net/hansvedo/TuLMC/

答案 1 :(得分:1)

这应该适合你所要求的。您只需要在表元素

的数据日期attr中设置开始日期

http://jsfiddle.net/ELRpv/14/

<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();

如果您有任何问题,请与我们联系。