0

JS コード

<?php
date_default_timezone_set('America/Los_Angeles');
$date = date('Gi', time());
?>

<script type="text/javascript">
$(function() {
  $(".show_hide").click( function()
       {
    var locTime = <?php echo json_encode($date) ?>; 
$.getJSON( "url_to_json", function(data) {
var isClosed = true;    
    for (var i = 0; i < data.location.monday.length || isClosed; i++) { 
    console.log("sucess1");
    xr_mon= data.location.monday[i];
    console.log("sucess2");
     if (locTime >= xr_mon.kai && locTime < xr_mon.guan ){
        console.log("location is open!");
        isClosed = false; 
        $('.xr').show("drop", { direction: "up" }, 400); 
        }
    else {
        console.log("location is closed");
        $('.xr').hide("drop", {
              direction: "down"
          }, 800);
    }
    }
});
       }
  );
});
</script>

JSON コード

{ "location": 
{
    "monday": [
    {"kai": 700, "guan": 1400},
    {"kai": 1700, "guan": 2100}

    ]
}
}

このループシーケンスを数回試した後。

isClosed が条件を満たしている場合でも、ループしている理由をまだ理解できませんでした。コードに何か欠けていましたか???

私の答えを見つけました。

<?php
date_default_timezone_set('America/Los_Angeles');
$date = date('Gi', time());
?>

<script type="text/javascript">
$(function() {
  $(".show_hide").click( function()
   {
var locTime = <?php echo json_encode($date) ?>; 
$.getJSON( "url_to_json", function(data) {

for (var i = 0; i < data.location.monday.length; i++) { 
console.log("sucess1");
xr_mon= data.location.monday[i];
console.log("sucess2");
 if (locTime >= xr_mon.kai && locTime < xr_mon.guan ){
    console.log("location is open!");

    $('.xr').show("drop", { direction: "up" }, 400); 
    Break;
    }
else {
    console.log("location is closed");
    $('.xr').hide("drop", {
          direction: "down"
      }, 800);
}
}
});
   }
);
});
</script>
4

1 に答える 1

0

私の理解が正しければ、(編集: did は can に変更されました) '||' の代わりに '&&' を使用してみてください。ループ状態?

for (var i = 0; i < data.location.monday.length && isClosed; i++)

EDIT2: 1800 の場合、ループは最初にこれをチェックします: {"kai": 700, "guan": 1400} 1800 が 700 と 1400 の間にないため、条件は true を返しません。 ": 1700, "guan": 2100} 条件は true を返します。これは、1800 が 1700 と 2100 の間にあるためです。したがって、スクリプトをこのように編集することを提案しました。それはあなたが達成したかったことですか?

var isClosed = true;    
    xr_mon= data.location.monday[0];
    xr_mon2= data.location.monday[1];
    if ((locTime >= xr_mon.kai && locTime < xr_mon.guan)  || (locTime >= xr_mon2.kai && locTime < xr_mon2.guan) ){
        console.log("location is open!");
        isClosed = false; 
        $('.xr').show("drop", { direction: "up" }, 400); 
        }
    else {
        console.log("location is closed");
        $('.xr').hide("drop", {direction: "down"}, 800);
    }
于 2013-06-27T21:11:29.493 に答える