2012-03-04 75 views
0

我有這樣的代碼:的Javascript時間問題

<script type="text/javascript"> 
var currenttime = '<? print date("F d, Y H:i:s", time()) ?>' 
var montharray=new Array("January","February","March","April","May","June","July","August","September","October","November","December") 
var serverdate=new Date(currenttime) 

function padlength(what){ 
var output=(what.toString().length==1)? "0"+what : what 
return output 
} 

function displaytime(){ 
serverdate.setSeconds(serverdate.getSeconds()+1) 
var datestring=montharray[serverdate.getMonth()]+" "+padlength(serverdate.getDate())+", "+serverdate.getFullYear() 
var timestring=padlength(serverdate.getHours()+1)+":"+padlength(serverdate.getMinutes())+":"+padlength(serverdate.getSeconds()) 
var minleft=60-serverdate.getMinutes() 
var secleft=60-serverdate.getSeconds() 
var houleft=24-serverdate.getHours()+1 
var newenergyin=padlength(minleft)+":"+padlength(secleft) 
var gainin=padlength(houleft)+":"+padlength(minleft)+":"+padlength(secleft) 
document.getElementById("servertime").innerHTML=timestring 
document.getElementById("moreenergy").innerHTML=newenergyin 
document.getElementById("inter").innerHTML=gainin 
} 

window.onload=function(){ 
setInterval("displaytime()", 1000) 
} 
</script> 

我有代碼的

document.getElementById("inter").innerHTML=gainin 

部分的問題。如果我做

<span id='inter'></span> 

它不想工作,但前一個我

document.getElementById("moreenergy").innerHTML=newenergyin 

作品精絕製成。

我在做什麼錯?我想要的是展示一個倒計時至午夜,倒計時,直到下一個小時的工作正常:S

HTML:

<td><center><b>- Currency -</b></center>Credits: <a href='main.php?id=depcre'>0</a>  
<br>Platinum: <font color='orange'>46</font><br>Waste Magic: <font color='orange'>48</font>  
<br>Copper: <font color='orange'>49</font><br>Silver: <font color='orange'>48</font>  
<br>Gold: <font color='orange'>47</font><br><br>Bank: <a href='main.php?id=witcre'>841</a>  
<Small> (<font color='orange'>0.25%</font> IGDA)</small><br>Interest Gain In: <font  color='orange'><span id='inter'></span></font></td> 

OK,整個HTML:

<script type="text/javascript"> 
var currenttime = '<? print date("F d, Y H:i:s", time()) ?>' 
var montharray=new Array("January","February","March","April","May","June","July","August","September","October","November","December") 
var serverdate=new Date(currenttime) 

function padlength(what){ 
var output=(what.toString().length==1)? "0"+what : what 
return output 
} 

function displaytime(){ 
serverdate.setSeconds(serverdate.getSeconds()+1) 
var datestring=montharray[serverdate.getMonth()]+" "+padlength(serverdate.getDate())+", "+serverdate.getFullYear() 
var timestring=padlength(serverdate.getHours()+1)+":"+padlength(serverdate.getMinutes())+":"+padlength(serverdate.getSeconds()) 
var minleft=60-serverdate.getMinutes() 
var secleft=60-serverdate.getSeconds() 
var houleft=24-serverdate.getHours()+1 
var newenergyin=padlength(minleft)+":"+padlength(secleft) 
var gainin=padlength(houleft)+":"+padlength(minleft)+":"+padlength(secleft) 
document.getElementById("servertime").innerHTML=timestring 
document.getElementById("moreenergy").innerHTML=newenergyin 
document.getElementById("inter").innerHTML=gainin 
} 

window.onload=function(){ 
setInterval("displaytime()", 1000) 
} 

</script> 
    <tr> 
     <td><center><b>- Stats [<a href='main.php?id=<?php echo $page;?>'>Refresh</a>] -</b></center>Level: <font color='orange'><?php echo $GETVAR[PL_LEVL]; ?></font><br>Experience: <font color='orange'><?php echo $GETVAR[PL_CUREXP]; ?></font>/<font color='orange'><?php echo $GETVAR[PL_NEXEXP]; ?></font><br>Energy: <font color='orange'><?php echo $GETVAR[PL_CURENG]; ?></font>/<font color='orange'><?php echo $GETVAR[PL_NEXENG]; ?></font><br>Skill: <font color='orange'><?php echo $GETVAR[PL_SKILL]; ?></font><br>HP: <font color='orange'><?php echo $GETVAR[PL_CURHP]; ?></font>/<font color='orange'><?php echo $GETVAR[PL_MAXHP]; ?></font><br>Hit Rate: <font color='orange'><?php echo $GETVAR[PL_HITRATE]; ?></font><br> 
<?php 
$cureng = $GETVAR['PL_CURENG']; 
$nexeng = $GETVAR['PL_NEXENG']; 
$curhit = $GETVAR['PL_CURHP']; 
$maxhit = $GETVAR['PL_MAXHP']; 
if(($cureng == $nexeng) && ($curhit == $maxhit)) 
{ 
    echo "<br>"; 
}else 
{ 
    echo "Energy and HP Increase in: <font color='orange'><span id='moreenergy'></span> </font>"; 
} 


?></td> 
    </tr> 
    <tr> 
     <td><center><b>- Currency -</b></center>Credits: <a href='main.php? id=depcre'><?php echo $GETVAR[PL_CRED]; ?></a><br>Platinum: <font color='orange'><?php echo  $GETVAR[PL_PLAT]; ?></font><br>Waste Magic: <font color='orange'><?php echo  $GETVAR[PL_WAMA]; ?></font><br>Copper: <font color='orange'><?php echo $GETVAR[PL_COPP]; ?> </font><br>Silver: <font color='orange'><?php echo $GETVAR[PL_SILV]; ?></font><br>Gold:  <font color='orange'><?php echo $GETVAR[PL_GOLD]; ?></font><br><br>Bank: <a href='main.php? id=witcre'><?php echo $GETVAR[PL_BANK]; ?></a><Small> (<font color='orange'><?php echo  $GETVAR[PL_INTR]*10;?>%</font> IGDA)</small><br>Interest Gain In: <font color='orange'> <span id='inter'></span></font></td> 
    </tr> 
    <tr> 
     <td><center><b>- You -</b></center> 
       <a href='main.php?id=news'>News</a><br> 
       <a href='main.php?id=yourhome'>Your Home</a><br> 
       <a href='main.php?id=yourmage'>Your Mage</a><br> 
       <a href='main.php?id=puppets'>Your Puppets</a><br> 
       <a href='main.php?id=enchants'>Your Enchants</a><br> 
       <a href='main.php?id=clan'>Your Clan</a><br> 
       <a href='main.php?id=pm'>Mailbox</a></td> 
    </tr> 
    <tr> 
     <td height=100%> <center><b>- Navigation -</b></center> 
       <a href='main.php?id=townarea'>Town of Tolbart</a><br> 
       <a href='main.php?id=skilupgr'>Skill Upgrades</a><br> 
       <a href='main.php?id=colloseu'>Colloseum</a><br> 
       <a href='main.php?id=wastmagi'>Waste Magic Center</a><br> 
       <a href='main.php?id=field'>Field</a><br> 
       <a href='main.php?id=market'>Market</a><br> 
       <a href='main.php?id=gather'>Gathering</a><br> 
       <a href='main.php?id=darkmagi'>Dark Magic Workshop</a><br> 
       <a href='main.php?id=research'>Research Facility</a><br> <br> 
       <a href='main.php?id=logout'>Log Out</a> 

<br>Game Time: <span class="servertime" id="servertime"></span> 
</td> 
      </tr> 
+1

如果您描述的問題更容易提供幫助,並且包含任何JS控制檯信息。 – 2012-03-04 22:06:44

+0

當你做相反的事時會發生什麼:'document.getElementById(「inter」)。innerHTML = newenergyin'和'document.getElementById(「moreenergy」)。innerHTML = gainin'? – pomeh 2012-03-04 22:07:51

+0

一些示例HTML標記(這個腳本與之交互)不會傷害任何一個:) – pete 2012-03-04 22:08:01

回答

0

我已經從問題中刪除了所有的PHP,使它更簡單。看來你的Java腳本運行良好。

你可以看到它在my js fiddle

注意運行:

你行你的JavaScript日期()類,而不是獲得從PHP的日期。

另請儘量不要在setInterval中使用字符串(setinterval在字符串上使用eval)。嘗試使用以下代替

setInterval(function(){displaytime()}, 1000)

+1

我使用PHP來獲得服務器時間,而不是本地時間,因爲JavaScript是客戶端,它只會選擇當地時間,糾正我,如果我錯了。 – 2012-03-05 08:16:21

+0

這似乎是正確的。你到底遇到了什麼問題? – user1239299 2012-03-12 07:20:27

0

分號是需要在JavaScript中終止語句。你的代碼缺少它們。

+3

不,這是合法的。 JS翻譯在認爲必要時會「添加」它們。 – 2012-03-04 22:11:43