1

我已经破解了一个秒表脚本,使它可以在我的 HTML 表单中的多次迭代中使用。它使用 id 标签来识别我按下哪个按钮来启动、结束和重置计时器,将当前时间发布到这些字段并在第三个字段中运行秒表。原因是开始/结束/持续时间将通过表格跟踪 12 个重要的制造过程。

我已经在“独立”HTML 文件的上下文中编写了这个文件,以测试可行性并且它工作得很好......但是......当我将代码粘贴到我的表单中时(这严重太大而无法在这里发布)并点击“开始”按钮 - 我将文本发布到我的“秒表”字段,然后我的页面刷新。

下面是发布到我的字段的大部分文本,我可以阅读(如有必要,我将扩展字段以捕获更多文本)和带有我编写的 javascript 代码的 HTML。

发布文本:function hour(serial_number){if(!isFinite(serial_number))return ....

我整理的代码:

<html>
<head>
<script type="text/javascript">

var sec = 0;
var mins = 0;
var hour = 0;

function duration(ctrlID){
  ctrlbtnID=(ctrlID)
  var cbtnVal=document.getElementById(ctrlbtnID).value;

  if(cbtnVal=='Begin'){
    document.getElementById(ctrlbtnID).value='End';
    var currentTime = new Date()
    var hours = currentTime.getHours()
    var minutes = currentTime.getMinutes()
    var seconds = currentTime.getSeconds()

    if (minutes < 10) {minutes = "0" + minutes}
    if (seconds < 10) {seconds = "0" + seconds}
    bTime= hours + ":" + minutes + ":" + seconds + " "
    document.getElementById(ctrlbtnID+"Start").value = bTime
  }  //end of if block
  else if(cbtnVal=='End'){
    document.getElementById(ctrlbtnID).value='Begin';
    var currentTime = new Date()
    var hours = currentTime.getHours()
    var minutes = currentTime.getMinutes()
    var seconds = currentTime.getSeconds()

    if (minutes < 10) {minutes = "0" + minutes}
    if (seconds < 10) {seconds = "0" + seconds}
    eTime= hours + ":" + minutes + ":" + seconds + " "
    document.getElementById(ctrlbtnID+"End").value = eTime
  }
  stopwatch();
}
function stopwatch(){
  var x=document.getElementById(ctrlbtnID).value;
  if (x=='End'){
    sec++;
  if (sec == 60) {
    sec = 0;
    mins = mins + 1;
  }
  else {
   mins = mins;
  }  
  if (mins == 60) {
    mins = 0;
    hour += 1;
  }
  if (sec<=9) {
    sec = "0" + sec;
  }
  var swTime=document.getElementById(ctrlbtnID+"Dur");

  swTime.value= ((hour<=9) ? "0"+hour : hour) + " : " + ((mins<=9) ? "0" + mins : mins) + " : " + sec;
  SD=window.setTimeout("stopwatch();", 1000);
  }
}
function reset(){
  var swTime=document.getElementById(ctrlbtnID+"Dur");
  sec = 0;
  mins = 0;
  hour = 0;
  swTime.value='00 : 00 : 00';
  document.getElementById(ctrlbtnID+"Start").value ='00 : 00 : 00';
  document.getElementById(ctrlbtnID+"End").value ='00 : 00 : 00';
}
</script>
</head> 
<body>
<input type="button" value="Begin" id="1_1"  onClick="duration(this.id)"/>
<input type="button" value="Reset" id="reset"  onClick="reset()"/>
<input type="text" value="00 : 00 : 00" id="1_1Dur"/>
<input type="text" value="00 : 00 : 00" id="1_1Start"/>
<input type="text" value="00 : 00 : 00" id="1_1End"/>
</body>
</html>

几天前我在这里发布了我的第一个问题-我已经解决了我自己的问题-但我希望我能得到更好的回应...我已经挖掘了所有我现在可以找到大约 2 天的在线资源,但找不到任何东西。

请 - 我可以使用一些帮助。

谢谢

4

2 回答 2

0

显然,您在hour(serial_number)某处有一个函数,覆盖了您的全局小时变量。所以请重命名函数或变量。

至于'reset()'函数,请告诉我们它是否被调用,或者它是否抛出错误,以及哪个。

于 2013-07-07T11:16:34.130 回答
0

好吧,如果没有至少部分有问题的表格,我认为我们无法在这里为您提供太多帮助。我可以确认该代码作为独立的 HTML 文件工作,但我不知道打印文本的来源(在您提供的代码中的任何地方都找不到)。

检查您的document.getElementById(problemFormId)电话...您可能自己将字段设置为文本变量而没有意识到。

于 2013-07-06T19:47:20.357 回答