0

我的数据库中有一个名为 view results 的表。它有 3 列。我想在 14 天后隐藏它的第 3 列“应用更正”。示例:表显示日期为 2012-12-01。14 天后如何隐藏它第 3 列(IN 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/

帮助我编辑此代码以完成我的任务...

4

5 回答 5

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/

于 2012-12-13T05:38:38.333 回答
1

这应该适用于您的要求。您只需要在表格元素的数据日期属性中设置开始日期

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();
于 2012-12-13T05:46:50.803 回答
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();       
    });
});
于 2012-12-13T05:33:53.527 回答
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);

​</p>

更新小提琴:http: //jsfiddle.net/ELRpv/5/

于 2012-12-13T05:37:39.420 回答
0

最好的方法是在服务器端执行此操作。- 如果 dayOfMonth(date)>14 :不写第三列。

如果您在 HTML 上编写第 3 列并在页面加载后隐藏或删除它,则有多种方法可以查看第 3 列的 HTML,以防万一。

要在浏览器上执行此操作,您需要依赖服务器日期而不是客户端日期,因为它可以由用户更改。

正如 tim 建议的那样,您可以将服务器日期设置为任何 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();

如果您有任何问题,请告诉我。

于 2012-12-13T06:12:18.833 回答