2017-02-01 5 views
0

私のスクリプトにテーブルを描画してデータを表示します。テーブル内の列の1つが日付変数です。
その日付の変数が今月にある場合は、その行をテーブルに表示する必要があります。言い換えれば、現在の月に日付がない場合は、行全体を非表示にしたい。日付変数が当月にある場合にのみテーブルに行を表示

日付の列はもともとISOの日付形式ですが、DD.MM.YYYYに変換します。

$("#T1").append("<tr align='middle'>" + 
    "<td align='left'>"+ID+"</td>" + 
    "<td align='left'>"+UserName+"</td>" + 
    "<td align='left'>"+formatYMDtoDMY(Date1)+"</td>"+ 
    "<td align='left'>"+City, State+"</td>" +  
    "<td align='left'>"+Project name+"</td>" + 
    "<td align='left'>"+Additional info+"</td>" + 
    "</tr>"); 

私はこの方法を試してみました:

if(input.getFullYear() == currentDate.getFullYear() 
    && input.getMonth() == currentDate.getMonth()) { 
    // than I post my table 
    } // but all I get displayed is only 1st date 

私も、私がキャッチすると考えていた私は、テーブル内の3番目の列、私の表に、この関数を呼び出すよりも

var Date1 = MyDate; 
function formatYMDtoDMY(s) 
{ 
    var b = s.split(/\D/); 
    return b[2] + '.' + b[1] + '.' + b[0] + '.'; 
} 

:この機能付き今月の最初と最後の日:

var date = new Date(), y = date.getFullYear(), m = date.getMonth(); 
var firstDay = new Date(y, m, 1); 
var lastDay = new Date(y, m + 1, 0); 

しかし、これらの変数の間にある場合は、日付の列のチェックを続行する方法がわかりません。

+0

あなただけのページを見ている人から行を非表示にする気にしてください(例: CSSを使用して)、または行がDOMに追加されないようにしたいのですか? –

+0

私はその行が表示されないようにしたいだけです。だから1番目の選択です。 – Danilo

答えて

0

私はあなたの質問を完全に誤解しました。

最も簡単なことは、ISO日付を実際の日付に変換することです。あなたはコンストラクタを呼び出すことで、日付オブジェクトを作成することができますので、JavaScriptのDateオブジェクトは、ISO日付形式を理解します。

var myDateObj = new Date(MyDate); 

Dateオブジェクトは、論理演算子で動作するので、私たちはあなたのfirstDayとLASTDAYオブジェクトを使用することができます。

var isCurrent = (firstDay <= myDateObj && myDateObj <= lastDay); 

テーブルをレンダリングするときに、これを使用して行を表示および非表示にすることができます。

$("#T1").append("<tr align='middle' class='" + isCurrent ? 'row-visible' : 'row-hidden' +"'>" + 
    "<td align='left'>"+ID+"</td>" + 
    "<td align='left'>"+UserName+"</td>" + 
    "<td align='left'>"+formatYMDtoDMY(Date1)+"</td>"+ 
    "<td align='left'>"+City, State+"</td>" +  
    "<td align='left'>"+Project name+"</td>" + 
    "<td align='left'>"+Additional info+"</td>" + 
    "</tr>"); 

CSSルールを追加します。

.row-hidden { 
    display: none; 
} 

.row-visible { 
    display: table-row; 
} 

あなたは、単一の関数にこれをラップすることができます:

function isCurrentMonth(s) { 
    var myDate = new Date(s); 
    var date = new Date(), y = date.getFullYear(), m = date.getMonth(); 
    var firstDay = new Date(y, m, 1); 
    var lastDay = new Date(y, m + 1, 0); 
    return (firstDay <= myDate && myDate <= lastDay); 
} 
+0

私はあなたのDate1オブジェクトがJavaScript Dateオブジェクトではないことに気付きました。私はそれに応じて私の答えを更新します。 –

+0

アラートのメッセージが無効です(myDateObj); – Danilo

+0

MyDateがISO準拠の日付の文字列である場合、それは起こりません(例としてhttps://jsfiddle.net/ywmvh9sp/)。 MyDateがIOSフォーマットの文字列表現であることを確認できますか? –

関連する問題