5

日付に基づいて非表示のdivを表示しようとしていますが、次のコードを試しています。

<script src="http://code.jquery.com/jquery-1.8.2.min.js"></script>
<script>

window.setInterval(function(){

  var current = new Date();
  var expiry  = new Date("October 29, 2012 12:00:00")
  var expiry2 = new Date("October 30, 2012 12:00:00")

  if(current.getTime()>expiry.getTime()){
    $('#one').hide();
    $('#two').show();
  }

  else(current.getTime()>expiry2.getTime()){
       $('#two').hide();
       $('#three').show();
   }

}, 3000);

$('#one').show(); 
</script>

<div id="one" style="display:none">
<p>content for div #one</p>
</div>

<div id="two" style="display:none">
<p>content for div #two</p>
</div>

<div id="three" style="display:none">
<p>content for div three</p>
</div>

Chromeのコンソールがスローされています:

Unexpected token {

したがって、if elseステートメントに構文エラーがあるように見えますが、私には問題ないように見えます:(

私が欠けているものを1つ見つけることができますか?

4

5 に答える 5

6

必要に応じて、動作しているjsfiddleを確認できます

else if問題はあなたがで必要なことですelse (current.getTime() > expiry2.getTime()) {

更新1

各divを。で閉じます</div>フィドルも更新されます

更新2

また、論理的なエラーだと私が思うものもあります。(current.getTime() > expiry2.getTime())条件をアクティブにしたい場合elseは、最初の条件のようにすることはできません(current.getTime()>expiry.getTime())。に変更するelse ifと、機能するはずですが、コードをさらに最適化するために、2番目を最初の中にif囲むことができます(常により小さいことを考慮して)ififexpiryexpiry2

于 2012-10-29T12:20:25.060 に答える
4

ifあなたは後に忘れましたelse

else if (current.getTime() > expiry2.getTime()) {
于 2012-10-29T12:16:51.833 に答える
2

スクリプトを少し操作して、クラスを追加すると、決定した時間にアイテムが消えるようにしました。コンテンツの有効期限が切れている場合は、表示または非表示になります。必要に応じて、さらに変数を追加したり、ifステートメントを追加したりできます。

私はまだJSとjQueryを学んでいるので、これを覚えておいてください。しかし、すべてが私が望んでいたように機能しているようで、コンソールにエラーはありません。

https://jsfiddle.net/medel/qhgrtwzm/2/

HTML

<div class="houdini" style="display:none">
  <p>content for div #one</p>
</div>

jQueryが有効になっているJS1.8.3

window.setInterval(function() {

  var current = new Date();
  var expiry = new Date("January 19, 2016 17:39:00")

  if (current.getTime() > expiry.getTime()) {
    $('.houdini').hide();

  } else if (current.getTime() < expiry.getTime()) {
    $('.houdini').show();
  }

}, 0);
于 2016-01-19T23:53:17.600 に答える
0

ジェイコブ・ジョージの答えは素晴らしいです!それが誰かを助ける場合に備えてこれを投稿してください。InternetExplorerとのUTC/GMT互換性のために、日付/時刻の形式を変更する必要がありました。また、ロジックを並べ替えて、ウォーターフォールのようにトリガーし、有効期限に基づいて1つのdivのみを表示するか、現在の時間がexpiry値より前の場合はdivを表示しません。

Javascript:

window.setInterval(function() {

  var current = new Date();
  var expiry = new Date('2015-12-03T02:00:00.000-08:00')
  var expiry2 = new Date('2015-12-04T02:00:00.000-08:00')
  var expiry3 = new Date('2015-12-05T02:00:00.000-08:00')

  if (current.getTime() > expiry3.getTime()) {
    $('#one').hide();
    $('#two').hide();
    $('#three').show();
  } else if (current.getTime() > expiry2.getTime()) {
    $('#one').hide();
    $('#two').show();
    $('#three').hide();
  } else if (current.getTime() > expiry.getTime()) {
    $('#one').show();
    $('#two').hide();
    $('#three').hide();
  }

}, 3000);
于 2015-12-03T18:26:15.890 に答える
0

ifelseステートメントの内部を忘れました。ブロックif-elseは次のようになります。

if (current.getTime() > expiry.getTime()) {
    $('#one').hide();
    $('#two').show();
} else if (current.getTime() > expiry2.getTime()) {
    $('#two').hide();
    $('#three').show();
}
于 2020-09-16T06:11:09.860 に答える