2016-11-09 70 views
0

我正在創建一個應該顯示倒計時的網頁,如果它爲零,則應該在新的截止日期之前開始下一個倒計時。 現在,我已經在Javascript中做了倒計時部分,這是有效的。
我已經做了一個PHP的一部分,讀取最後期限形成一個txt文件,這也適用。
現在我已經找到了一種將php截止日期轉換爲javascript的方式,應該可以工作。
但是。 下一個截止日期必須在上一個完成時開始,因此它是00:00:00。 有沒有辦法在php中檢查html div的內容? 因此,它將不得不檢查是否與ID =倒數div的內容等於00:00:00如果html div等於某個值,則在PHP中檢查

謝謝你們! 編輯:命題重複的問題並沒有解決我的問題......

<!DOCTYPE html> 
 

 
<!-- php functions --> 
 
<?php 
 

 
$deadlineH = null; 
 
$deadlineM = null; 
 
$deadlineS = null; 
 
$deadlineTitle = null; 
 

 

 
$filename = "data.txt"; 
 
$fp = fopen($filename, "r"); 
 
$content = fread($fp, filesize($filename)); 
 

 
$fullArray = setFullArray($content); 
 
$length = count($fullArray); 
 
for ($i = 0; $i < $length - 1; $i++) { 
 
    $value = $fullArray[$i]; 
 
    echo "var " . ($i + 1) . ": " . $fullArray[$i] ." <br>"; 
 
    if((($i+1) % 4) == 0){ 
 
    echo " "; 
 
    } 
 
} 
 

 
$numberoflines = getNumberOflines($fullArray); 
 
echo "number of lines: " . $numberoflines . "<br>"; 
 
showDeadlines($fullArray); 
 

 
function setFullArray($content){ 
 
    $fullArray = preg_split("/(:|\n)/" ,$content);   // splits the whole data txt file into small chunks, everything apart 
 
    return $fullArray; 
 
} 
 

 
function getNumberOflines($fullArray){ 
 
    $numberoflines = (sizeof($fullArray) - 1)/4; 
 
    return $numberoflines; 
 
} 
 

 
function showDeadlines($fullArray){ 
 
    $length = count($fullArray); 
 
    for ($i=0; $i < $length-1; $i = $i + 4) { 
 
    $deadlineNumber = ($i + 4)/4; 
 
    $deadlineH = $fullArray[$i]; 
 
    $deadlineM = $fullArray[$i+1]; 
 
    $deadlineS = $fullArray[$i+2]; 
 
    $deadlineTitle = $fullArray[$i+3]; 
 
    echo "deadline " . $deadlineNumber . ": " . $deadlineH . ":" . $deadlineM . ":" . $deadlineS . " titel : " . $deadlineTitle . "<br>"; 
 
    } 
 
} 
 
?> 
 
<!-- end php functions --> 
 

 
<html> 
 
<head> 
 
<link rel="stylesheet" type="text/css" href="style.css"> 
 
</head> 
 

 
<body onload="startTime()"> 
 

 
<?php 
 
//php vars: 
 
$NumberOfDeadlines = 10; 
 
?> 
 

 
<div id="visible"> 
 
<div id="clock"><span> </span> </div><br> 
 
<div id="countdown"> </span> </div> 
 
</div> 
 
<div id="inputs"> 
 

 
    <form> 
 
<!-- <?php 
 
for ($i=1; $i < $NumberOfDeadlines; $i++) { ?> 
 
    deadline <?= $i ?> : <br> 
 
    <label for="deadline<?= $i ?>H">Hour: </label> 
 
    <input type="number" name="deadline<?= $i ?>H" id="deadline<?= $i ?>H" min="0" max="23"> 
 
    <label for="deadline<?= $i ?>M">Minute: </label> 
 
    <input type="number" name="deadline<?= $i ?>M" id="deadline<?= $i ?>M" min="0" max="59"> 
 
    <label for="deadline<?= $i ?>S">Second: </label> 
 
    <input type="number" name="deadline<?= $i ?>S" id="deadline<?= $i ?>S" min="0" max="59"> 
 
    <label for="deadline<?= $i ?>Title">Title: </label> 
 
    <input type="text" name="deadline<?= $i ?>Title" id="deadline<?= $i ?>Title"> 
 
    <br> 
 
<?php 
 
} 
 
?> --> 
 
<input type="submit" value="Submit"> 
 
</form> 
 
</div> 
 

 
<!-- javascript scripts --> 
 
<script> 
 
function startTime() { 
 
    var now = new Date(); 
 
    //var deadline = new Date();     NOT USED ANY MORE 
 
    // year, month, day, hours, minutes, seconds, milliseconds 
 
    var deadline = new Date(2016, 11, 9); 
 
    var phpHours = <?php echo json_encode($GLOBAL[deadlineH]); ?>; 
 
    var phpMinutes = <?php echo json_encode($GLOBAL[deadlineM]); ?>; 
 
    var phpSeconds = <?php echo json_encode($GLOBAL[deadlineS]); ?>; 
 
    deadline.setHours() 
 
    
 
    //console.log(deadline); 
 

 
    var clockH = now.getHours(); 
 
    var clockM = now.getMinutes(); 
 
    var clockS = now.getSeconds(); 
 

 
    // var countdownH = getCountdown(deadline).hours; 
 
    // var countdownM = getCountdown(deadline).minutes; 
 
    // var countdownS = getCountdown(deadline).seconds; 
 

 
    //m = checkTime(m); 
 
    //s = checkTime(s); 
 

 
    startClock('clock'); 
 
    startCountdown('countdown', deadline); 
 

 
    var t = setTimeout(startTime, 500); 
 
} 
 

 
function getCountdown(deadline){ 
 
    //console.log(Date.parse(deadline)); 
 
    //console.log(Date.parse(new Date())); 
 
    var countdownTotal = Date.parse(deadline) - Date.parse(new Date()); 
 
    var countdownS =  Math.floor((countdownTotal/1000) % 60); 
 
    var countdownM =  Math.floor((countdownTotal/1000/60) % 60); 
 
    var countdownH =  Math.floor((countdownTotal/(1000*60*60)) % 24); 
 
    return{ 
 
     'countdownTotal': countdownTotal, 
 
     'countdownH':  countdownH, 
 
     'countdownM':  countdownM, 
 
     'countdownS':  countdownS 
 
    } 
 
} 
 

 
function startClock(id){ 
 
    var clock = document.getElementById(id); 
 
    var timeInterval = setInterval(function(){ 
 
    var now = new Date(); 
 
    var nowH = now.getHours(); 
 
    var nowM = now.getMinutes(); 
 
    var nowS = now.getSeconds(); 
 
    nowH = checkTime(nowH); 
 
    nowM = checkTime(nowM); 
 
    nowS = checkTime(nowS); 
 

 
    clock.innerHTML = nowH + ':' + nowM + ':' + nowS; 
 
    }, 1000); 
 
} 
 

 
function startCountdown(id, deadline){ 
 
    var countdown = document.getElementById(id); 
 
    var timeInterval = setInterval(function(){ 
 
    var t = getCountdown(deadline); 
 
    //console.log(t); 
 
    countdown.innerHTML = checkTime(t.countdownH) + ':' + checkTime(t.countdownM) + ':' + checkTime(t.countdownS); 
 
    if(t.countdownTotal <= 0){ 
 
     clearInterval(timeInterval); 
 
    } 
 
    }, 1000); 
 
} 
 

 
function checkTime(i) { 
 
    if (i < 10) {i = "0" + i}; // add zero in front of numbers < 10 
 
    return i; 
 
} 
 
</script> 
 
<!-- //end javascript --> 
 

 
</body> 
 
</html>

+0

我想你會想做一個AJAX調用,並將div的內容發送到一個php腳本進行解析/處理。 – raphael75

+0

我爲那些詢問過的人添加了我的代碼。 –

+0

[如何使用PHP獲取HTML Div的值]的可能重複(http://stackoverflow.com/questions/30569809/how-to-get-value-of-html-div-using-php) –

回答

0

你所有的倒計時數據傳送到HTML頁面?
如果是的話,積極倒計時必須結束時觸發事件。如果是這樣,你的下一個倒計時必須「標記」。
如果沒有,並且倒計時必須觸發一個事件,在這種情況下,您可以通過ajax調用服務器來獲得下一個倒計時daba,甚至刷新頁面以獲得最新倒計時。

編輯:

我知道程序員並不想放棄自己的代碼,但我要你推薦一個倒計時插件,支持結束事件和這麼多的其他功能。你可以在this link中找到它。

現在,爲了獲得下一個倒計時數據,正如我已經說過的那樣,您必須在結束時發出ajax調用,或者在頁面加載時獲取所有這些數據。

我不知道這是你需要什麼,但我希望我會幫助。

祝你好運。

+0

我加了我的代碼,所以你可以看到我做的,謝謝! –

0

您只能使用PHP get_contents功能,例如讀取靜態頁面:

$homepage = file_get_contents('http://www.google.com/'); 
echo $homepage; 

如果您使用JavaScript,你也可以用它來製作一個Ajax請求發送div的內容來操作數據你的PHP腳本。

相關問題