2016-04-10 10 views
0

イベントのリストがあり、各イベントのIDを有効期限として設定しています。その日付が現在の日付よりも小さい場合、その要素は非表示になります。あなたは私が私の各関数の外で定義されています私のdateContent変数の値を失ってるように見え、以下の私のコードを見ることができます:id値に基づく要素をjQueryで非表示にする

HTML:

<div class="today"></div> 
         <ul id="20160430" class="nostylelist event-list"> 
          <li>Event 1</li> 
          <li>April 29, 2016</li> 
          <li>Minneapolis Convention Center</li> 
          <li>Minneapolis, MN</li> 
          <li>Booth 659</li> 
         </ul> 
         <ul id="20151106" class="nostylelist event-list"> 
          <li>Event 2</li> 
          <li>November 4-5, 2015</li> 
          <li>Minneapolis Convention Center</li> 
          <li>Minneapolis, MN</li> 
          <li>Booth 659</li> 
         </ul> 

$(function() { 
    var today 
    var year 
    var month 
    var monthLength 
    var day 
    var dateContent 

    function currentDate() { 
     var today = new Date(); 
     var year = today.getFullYear(); 
     var month = today.getMonth()+1; 
     var monthLength = month.toString().length; 
     var day = today.getDate(); 
     if (monthLength == 1) { 
      dateContent = $('.today').append(year).append('0' + month).append(day); 
     } else { 
      dateContent = $('.today').append(year).append(month).append(day); 
     } 
    } 
    currentDate(); 


    $('.event-list').each(function(index) { 
     if ($(this).attr('id') < dateContent) { 
      $(this).hide(); 
     } 
     //$('.id').text(dateContent); 
    }); 

}); 
+0

'.append() 'ではない文字列を連結するために、要素のためのものです。 – Alnitak

答えて

3

dateContentを期待される形式の文字列として取得するには、currentDate関数をこれに置き換えます。 getFullYear、getMonth、およびgetDateは数値を返しますので、フォーマットを保持したい場合は直接追加しないでください。

function currentDate() { 
    var today = new Date(); 
    var year = today.getFullYear(); 
    var month = today.getMonth()+1; 
    var monthLength = month.toString().length; 
    var day = today.getDate(); 
    if (monthLength == 1) { 
     dateContent = "" + year + "0" + month + day; 
    } else { 
     dateContent = "" + year + month + day; 
    } 
} 
+0

ありがとう!これは完全に機能しました。 dateContentを文字列として取得することは、私が本当に苦労していたことです。私は年+月+日を試しましたが、それだけで一緒に数字を追加します。 – brandozz

0

私はあなたが保持するためdateContentを期待していると思います現在の日付。しかし、現在の日付(例:20160410)を.todayに設定して、追加する戻り値は20160410という値ではなくDOM要素です。

したがって、attr( 'id')との比較動作しないでしょう。

0
<script> 
    $(function() { 
     var today 
     var year 
     var month 
     var monthLength 
     var day 
     var dateContent 
     function currentDate() { 
      var today = new Date(); 
      var year = today.getFullYear(); 
      var month = today.getMonth() + 1; 
      var monthLength = month.toString().length; 
      var day = today.getDate(); 
      if (monthLength == 1) { 
       $('.today').append(year).append('0' + month).append(day); 
       dateContent = year + '0' + month + day; 
      } else { 
       $('.today').append(year).append(month).append(day); 
       dateContent = year + month + day; 
      } 

     } 
     currentDate();    
     $('.event-list').each(function (index) { 
      console.log(dateContent); 
      console.log($(this).attr('id')); 
      if ($(this).attr('id') < dateContent) { 
       $(this).hide(); 
      }     
     }); 

    }); 
関連する問題