0

dbにviewresultsというテーブルがあります。3つの列があります。14日後に3番目の列「ApplyRecorrection」を非表示にします。例:テーブルの表示日は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)「表示日」を data-date 属性として追加できる場合は、一部の 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

これを行う最良の方法は、サーバー側でこれを行うことです。--dayOfMonth(date)> 14の場合:3番目の列を書き込まないでください。

HTMLに3番目の列を記述し、ページが読み込まれたときに非表示または削除する場合、誰かが望む場合に備えて3番目の列のHTMLを表示する方法はn個あります。

ブラウザでこれを行うには、ユーザーが変更できるため、クライアントの日付ではなくサーバーの日付に依存する必要があります。

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 に答える
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 に答える