2011-08-26 95 views
1

我發現這個秒錶JavaScript,完成「開始」,「停止」和「重置」按鈕。這個腳本的功能很好,但我想稍微修改它。我設法使用CSS border-image來設計按鈕背景,但我想用JavaScript來替換圖標中的「開始」,「停止」和「重置」文本。JavaScript替換按鈕文字與圖像...觸發按鈕與外部事件

我還想讓用戶點擊另一個區域時啓動計時器。例如,我可以使用它來追蹤用戶解決拼圖的時間長短,所以如果可以在拼圖上記錄用戶的第一個事件時激活「開始」按鈕,那就太好了。我雖然關於爲任何點擊製作事件監聽器,但是恐怕可能會導致按鈕在每個事件上切換開始/停止。

最後,如果「停止」按鈕在遊戲暫停時觸發隱藏的div,並顯示消息屏幕並顯示在遊戲的頂部,那將會很不錯。下面是我的代碼片段

JAVASCRIPT

var sec = 0; 
var min = 0; 
var hour = 0; 
function stopwatch(text) { 
sec++; 
if (sec == 60) { 
sec = 0; 
= min + 1; } 
else { 
min = min; } 
if (min == 60) { 
min = 0; 
hour += 1; } 

if (sec<=9) { sec = "0" + sec; } 
document.clock.stwa.value = ((hour<=9) ? "0"+hour : hour) + " : " + ((min<=9) ? "0" +  min : min) + " : " + sec; 

if (text == "Start") { document.clock.theButton.value = "Stop";} 
if (text == "Stop") { document.clock.theButton.value = "Start"; } 

if (document.clock.theButton.value == "Start") { 
window.clearTimeout(SD); 
alert("Timer is Paused...Resume?"); 
return true; } 
SD=window.setTimeout("stopwatch();", 1000); 
} 

function resetIt() { 
sec = -1; 
min = 0; 
hour = 0; 
if (document.clock.theButton.value == "Stop") { 
document.clock.theButton.value = "Start"; } 
window.clearTimeout(SD); 
} 

CSS

.button { 
border-width:0 5px; -webkit-border-image:url(../images/toolButton-791569.png) 0 5 0 5; padding:7px 0; font: bold 12px Arial,sans-serif; color:#fff; width:auto; margin:5px 10px 0 0; width:auto; height: 25px; text-align:center; cursor:pointer; 
} 

HTML

<div id="timer"> 
    <form name="clock"> 
    <input type="text" size="14" name="stwa" value="00 : 00 : 00" style="text-align:center; position: relative; top: 0px; background: #ccc; font-weight: bold; font-size: 14px;" /> 
    <br/><input type="button" class="button" name="theButton" onClick="stopwatch(this.value);" value="Start" /> 
    <input type="button" class="button" value="Reset" onClick="resetIt();reset();" /> 
    </form></div> 

我小號在這個社區中,優秀的程序員可能會發現這個問題很微不足道,但請原諒我。我是一個新手程序員,這個挑戰導致我很多不眠之夜。請幫助...

感謝, 卡洛斯

回答

1

在這裏你去http://jsfiddle.net/mplungjan/C4wjV/

我沒有做暫停鍵

<style type="text/css"> 
img { height:50px } 
#stwa {text-align:center; position: relative; top: 0px; background: #ccc; font-weight: bold; font-size: 14px;} 
</style> 

<script type="text/javascript"> 
var buttons = { 
    Start:"http://morethanvoice.net/m1/img/play.gif", 
    Stop:"http://morethanvoice.net/m1/img/pause.gif" 
} 
var sec = 0,min = 0,hour = 0,SD; 

function stopwatch(text) { 
    sec++; 
    if (sec === 60) { 
    sec = 0; 
    min += 1; 
    } 
    if (min === 60) { 
    min = 0; 
    hour += 1; 
    } 

    document.clock.stwa.value = ((hour<10) ? "0"+hour : hour) + " : " + 
     ((min<10) ? "0" + min : min) + " : " + 
     ((sec<10)? "0" + sec:sec); 

    if (text) { // i.e. we are clicked 
    if (text==="Stop") window.clearTimeout(SD); 
    text = (text==="Start")?"Stop":"Start"; 
    document.getElementById('stopstart').title=text; 
    document.getElementById('stopstarticon').src=buttons[text]; 
    } 
    if (!text || text === "Stop") SD=window.setTimeout(function() {stopwatch()}, 1000); 
    return false; 
} 

function resetIt() { 
    sec = -1; 
    min = 0; 
    hour = 0; 
    document.getElementById('stopstart').title = "Start" 
    document.getElementById('stopstarticon').src=buttons["Start"]; 
    window.clearTimeout(SD); 
    document.clock.stwa.value=document.clock.stwa.defaultValue; 
    return false; 
} 
</script> 

    <form name="clock"><input type="text" size="14" id="stwa" name="stwa" value="00 : 00 : 00" /> 
</form><br/> 

<a href="#" id="stopstart" title="Start" 
onClick="return stopwatch(this.title)"><img id="stopstarticon" src="http://morethanvoice.net/m1/img/play.gif" border="0" /></a> 
<a href="#" onClick="return resetIt()"><img src="http://morethanvoice.net/m1/img/rewind.gif" border="0" /></a> 
+0

我試圖分配的onclick行動拼圖DIV之前,但是每次點擊拼圖時都會導致計時器以3-5秒的增量跳躍。此外,JavaScript取決於實際的「開始」和「停止」文本來切換開始按鈕(開始/停止是一個按鈕與切換狀態/重置是單獨的按鈕)。我試過你的代碼。顯示「開始」/「重置」圖像,但「開始」僅在每次點擊時移動1秒...不切換「停止」圖標(仍未在代碼中進行說明)。重置按鈕不會立即採取行動,但在單擊「重置」一次後,「開始」會將定時器重置爲零。 – Carlos

+0

@Carlos - 查看更新 – mplungjan

+0

你很棒,我的朋友。我現在可以睡了:)感謝你的知識。我也想出瞭如何在點擊事件上加上時鐘......我設置了一個div來顯示onload,但是在div中放置了一個按鈕,它隱藏了div並激活了時間。再一次,非常感謝你! – Carlos