1

我正在尝试制作一个使用时间发布的表格。我设法计算了时间。我想输入一个特定的时间来发布等。12:00。是否可以?

<html>
<head>

</head>
<body>
   <span id="remain"></span>
   <form action="3.php" method="post" id="form1" name="form1">
     <input type="text" name="id">
     <input type="submit" name="Go" value="submit">
   </form>

<script type="text/javascript">
  window.onload=counter;
  function counter() {
     seconds = 150;
     countDown();
  } 

  function countDown(){
     document.getElementById("remain").innerHTML=seconds;
     setTimeout("countDown()",1000);
     if(seconds == 0) {
        document.form1.submit();
     }else {
        seconds--;      
     }
   }    
</script>

4

3 回答 3

2

这是通过查找当前时间完成的,然后将当前时间与您要发布表格的设置时间进行比较

查找当前时间

var currentTime = new Date ( );
var currentHours = currentTime.getHours ( );
var timeOfDay = ( currentHours < 12 ) ? "AM" : "PM";
currentHours = ( currentHours > 12 ) ? currentHours - 12 : currentHours;
currentHours = ( currentHours == 0 ) ? 12 : currentHours;

使用上面的代码,您可以找到当前时间,然后与特定时间进行比较。如果两个时间相等,则运行该函数。

于 2012-11-15T08:23:59.123 回答
1

我认为您可以使用此代码。这不完全是你问的方式,但这就是想法

    <html>
<head>

</head>
<body>
<span id="remain"></span>
<form action="test1.asp" method="post" id="form1" name="form1">
<input type="text" name="id">
<input type="submit" name="Go" value="submit">
</form>
<script type="text/javascript">
window.onload=counter;
function counter()
{
    var currentTime = new Date ( );

  var currentHours = currentTime.getHours ( );
  var currentMinutes = currentTime.getMinutes ( );
  var currentSeconds = currentTime.getSeconds ( );
hours=currentHours
minutes=currentMinutes
seconds = currentSeconds;

countDown();
}   

function countDown(){


document.getElementById("remain").innerHTML=hours+':'+minutes+':'+seconds;
setTimeout("countDown()",1000);
    if(hours == 12)
        {
            document.form1.submit();
        }else {
        seconds--;      
        }
}

</script>
</body>
</html>
于 2012-11-15T08:30:08.023 回答
1

将您的功能 countDown 更改为此。首先获取当前时间,然后将剩余秒数计算为当前时间并将其设置为以秒为单位的超时时间

function countDown(){

 //current time in seconds
 var d = new Date();
 var n = d.getTime();

 //find the remaining seconds from a day
 var remainingSec = n % (60 * 60 * 24);

 //find current hours set and convert to seconds
 var timeOfDay = ( currentHours < 12 ) ? "AM" : "PM";
 currentHours = ( currentHours > 12 ) ? currentHours - 12 : currentHours;
 currentHours = ( currentHours == 0 ) ? 12 : currentHours;
 var currentSec = currentHours * 60 * 60;

 //set timeout time
 var timeoutTime = remainingSec - currentSec;

 if(timeoutTime > 0) {
  setTimeout(function(){
   document.form1.submit();
  },timeoutTime * 1000);
 } else {
  console.log("Sorry the time is back in the past.");
 }

}
于 2012-11-15T08:32:13.783 回答