2011-08-26 55 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