2016-11-09 29 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脚本。

相关问题