Amit Gupaに対する応答では、(thisに基づく)解析なしでは動作しないコードがあります。さて、最初の部分はビューの主要部分です。 $イベントは、日付と時刻を別々に保存してデータベースから取得しています。私はlaravel widgetsを使用してこれをウィジェットとして使用していますが、通常のビューとしてはかなり機能します。
<div id="clockdiv">
<div class = 'timeFormat form-group-shadow'>
<span class="days">0</span>
<div class="small-text">Days</div>
</div>
<div class = 'timeFormat form-group-shadow'>
<span class="hours">00</span>
<div class="small-text">Hours</div>
</div>
<div class = 'timeFormat form-group-shadow'>
<span class="minutes">00</span>
<div class="small-text">Minutes</div>
</div>
<div class = 'timeFormat form-group-shadow'>
<span class="seconds">00</span>
<div class="small-text">Seconds</div>
</div>
</div>
</div>
{{ HTML::script('js/countdown.js') }}
<script>
var date = '@if(isset($event)){!! json_encode($event->date) !!}@endif',
time = '@if(isset($event)){!! json_encode($event->time) !!}@endif',
dateTime = JSON.parse(date) + " " + JSON.parse(time);
if(new Date(dateTime) >= Date.now()){
initializeClock('clockdiv', dateTime);
};
</script>
スクリプト 'js/countdown.js'がここに表示されます。
function getTimeRemaining(endtime){
var t = Date.parse(endtime) - Date.parse(new Date());
var seconds = Math.floor((t/1000) % 60);
var minutes = Math.floor((t/1000/60) % 60);
var hours = Math.floor((t/(1000*60*60)) % 24);
var days = Math.floor(t/(1000*60*60*24));
return {
'total': t,
'days': days,
'hours': hours,
'minutes': minutes,
'seconds': seconds
};
}
function initializeClock(id, endtime){
var clock = document.getElementById(id);
var daysSpan = clock.querySelector('.days');
var hoursSpan = clock.querySelector('.hours');
var minutesSpan = clock.querySelector('.minutes');
var secondsSpan = clock.querySelector('.seconds');
function updateClock(){
var t = getTimeRemaining(endtime);
daysSpan.innerHTML = t.days;
hoursSpan.innerHTML = ('0' + t.hours).slice(-2);
minutesSpan.innerHTML = ('0' + t.minutes).slice(-2);
secondsSpan.innerHTML = ('0' + t.seconds).slice(-2);
if(t.total<=0){
clearInterval(timeinterval);
}
}
updateClock();
var timeinterval = setInterval(updateClock,1000);
}
このコードはうまくいきますが、解析しないと失敗します。
あなたの質問は、laravelといくつかのjson関数を参照する以外に、投稿したリンクとは関係がないようです。あなたのリンクの人は、JavascriptでEloquentインスタンスを送信したりアクセスしたりする方法を尋ねていました。それを行うための簡単で簡単な方法は、その属性をjson_encodeにしてjavascriptに渡すことです。 – georaldc
@georaldcそして彼の質問は、なぜデータをjson_encodeする必要があるのかということです。 :) –
javascriptの変数がjsonとして保存されているため – Paras