2016-09-11 14 views
1

我是新來的。很高興見到你。想要將標識或標記從HTML/PHP轉發到JS(Keith Wood倒數jQuery插件)

我有點困惑。幾天後,我嘗試修復臭名昭着的「最終倒計時」jQuery插件並讓它運行wth MomentsJS。但我運氣不好。這部紀錄片幾乎不存在非專業網絡編碼器(我不指望)。所以我嘗試了其他的東西......直接MomentsJS,但這導致了很多重新加載(AJAX),特別是如果出現打嗝,並且我不能在頁面上使用多個定時器。然後我回到了基思伍德的倒計時/定時器插件,我終於開始運行。還要感謝StackOverFlow文章。但是,我想優化的代碼 - 而這正是在爲我設置的問題

什麼,我想做的事:

  • 我想創建一個簡單的倒計時/定時器的網頁(佈局是目前 不是我關心
  • 它必須是服務器時間/時區意識到,而不是專注於 客戶端/瀏覽器時

什麼MOD​​ULE小號我使用: - jQuery的 - 基思·伍德的倒計時jQuery插件V2.0.2 - 目前HTML

我想尋找哪些AM來實現: - 我想有一個HTML文件,然後鏈接。 js文件清理 腳本中的主要HTML文件(任何人都不應該看到這一點,並且我在頁面上使用 更多腳本/函數,但無論如何,這將集成 ) - 我想轉發ID /類/數組

這裏是到目前爲止的代碼:

HTML

!DOCTYPE html> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"> 
<title>jQuery Countdown</title> 
<link rel="stylesheet" href="jquery.countdown.css"> 

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> 
<script src="jquery.plugin.js"></script> 
<script src="jquery.countdown.js"></script> 
<script src="timer.js"></script> 

</head> 
<body> 

COUNTDOWN 1 

<div id="defaultCountdown" data-end="Sep 22, 2016 00:00:00 +0000"></div> 

</body> 
</html> 

的JavaScript

(function($){ 

    // TIMER 

      function serverTime() { 
       var time = null; 
       $.ajax({ 
        url: 'servertime.php', 
        async: false, 
        dataType: 'text', 
        success: function (text) { 
         time = new Date(text); 
        }, 
        error: function (http, message, exc) { 
         time = new Date(); 
        } 
       }); 
       return time; 
      } 

      $(function() { 
       $("#defaultCountdown").countdown({ 
        until: new Date('Sep 22, 2016 00:00:00 +0000'), 
        serverSync: serverTime 
       }); 
      }); 


})(jQuery); 

PHP

<?php 
$now = new DateTime(); 
echo $now->format("M j, Y H:i:s O")."\n"; 
?> 

現在這裏是東西:你看到「數據結束」標籤我在div設置,這個值應該被轉發到JS,更具體線路

until: new Date('Sep 22, 2016 00:00:00 +0000'), 

因此,而不是冗長的日期,應該有一個從HTML文件中讀出數字值的變量(參見「data-end」),這樣我就不必每次更新計時器時都要弄亂JS文件。如果我想觸發多於一個倒計時/定時器,這也是非常耗時的。但可悲的是,我不知道如何。我嘗試了.attr()代碼,但它不起作用。 JS每天/小時/分鐘(NaN)都會拋出一個錯誤,或根本沒有顯示任何錯誤。

我也想改變一些事情,如果可能的話,即:

  • 時間格式(爲類似YYYY/MM/DD小時/分/秒
  • 時區(目前,在那裏,這是坐在服務器 GMT + 1,但我想有超過對照)

我是一個大一新生在代碼方面,我可以走動了一些基本的東西,但如果它涉及到實際轉發價值和與他們合作,我迷失在海洋中。

任何及時的幫助將不勝感激 - 也許這是一件非常簡單的事情,我還沒有想到。所以提前謝謝

+0

一般(document.getElementById('defaultCountdown')。dataset.end',所以你可以改變你的代碼爲'until:new Date(document.getElementById('defaultCountdown'))。dataset。結束)' – RamRaider

+0

非常非常感謝你,這爲我工作,併爲我解決了幾個小時的挫折。猜猜JS完全不是我的特長 – MisterSmith

回答

0

歡迎登機。

要獲得從格的值可以在js使用

$(function() { 
    $("#defaultCountdown").countdown({ 
     until: $('#defaultCountdown').data('end), 
     serverSync: serverTime 
    }); 
}); 
  • 爲可以使用date_default_timezone_set()時區。更多這裏http://php.net/manual/en/function.date-default-timezone-set.php

  • coundoun.js期望以某種方式的時間格式。你我懷疑楠是從你試圖改變它

  • +0

    我想我不會搞時間格式。然而,你的代碼想法可惜沒有奏效。什麼爲我工作是'直到:新日期(document.getElementById('defaultCountdown')。dataset.end)' – MisterSmith

    +0

    有一個錯字,缺少一個#。現在試試吧,讓jQuery全面通過 – iliaz

    0

    我不知道的jQuery所以不知道是否會之後的實際工作,但也許你可以嘗試:

    $(function() { 
        this.countdown({ 
         until: this.dataset.end, 
         serverSync: serverTime 
        }); 
    }.bind($("#defaultCountdown"))); 
    
    +0

    謝謝,但可惜這沒有奏效 - 請參閱上面的答案 – MisterSmith

    相關問題