Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 工作本身很好,但当我把它放在我身体的其他部分时,它就爆炸了_Javascript_Html_Forms_Time_Stopwatch - Fatal编程技术网

Javascript 工作本身很好,但当我把它放在我身体的其他部分时,它就爆炸了

Javascript 工作本身很好,但当我把它放在我身体的其他部分时,它就爆炸了,javascript,html,forms,time,stopwatch,Javascript,Html,Forms,Time,Stopwatch,我已经砍掉了一个秒表脚本,使它可以在HTML表单的多次迭代中使用。它使用id标签来识别我按下哪个按钮来启动、结束和重置计时器,将当前时间发布到这些字段,并在第三个字段中运行秒表。原因是,将通过表格跟踪12个重要制造流程的开始/结束/持续时间 我在一个“独立”HTML文件的上下文中编写了这篇文章,以测试它的可行性,它工作得很好。。。然而。。。当我将代码粘贴到我的表单中(表单太大,无法在这里发布)并点击“开始”按钮时,我会将文本发布到“秒表”字段,然后我的页面刷新 下面是我可以阅读的发布到我的字段中

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

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

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

发布文本:函数小时(序列号){if(!isFinite(序列号))返回

我编写的代码:

<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>

var-sec=0;
var-mins=0;
var小时=0;
功能持续时间(ctrlID){
ctrlbtnID=(ctrlID)
var cbtnVal=document.getElementById(ctrlbtnID).value;
如果(cbtnVal=='Begin'){
document.getElementById(ctrlbtnID).value='End';
var currentTime=新日期()
var hours=currentTime.getHours()
var minutes=currentTime.getMinutes()
var seconds=currentTime.getSeconds()
如果(分钟<10){minutes=“0”+minutes}
如果(秒<10){seconds=“0”+秒}
B时间=小时+”:“+分钟+”:“+秒+”“
document.getElementById(ctrlbtnID+“开始”).value=bTime
}//if块的结束
else if(cbtnVal=='End'){
document.getElementById(ctrlbtnID).value='Begin';
var currentTime=新日期()
var hours=currentTime.getHours()
var minutes=currentTime.getMinutes()
var seconds=currentTime.getSeconds()
如果(分钟<10){minutes=“0”+minutes}
如果(秒<10){seconds=“0”+秒}
时间=小时+”:“+分钟+”:“+秒+”“
document.getElementById(ctrlbtnID+“End”).value=eTime
}
秒表();
}
功能秒表(){
var x=document.getElementById(ctrlbtnID).value;
如果(x=='End'){
sec++;
如果(秒=60){
秒=0;
分钟=分钟+1;
}
否则{
分钟=分钟;
}  
如果(分钟==60){
分钟=0;
小时+=1;
}

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


检查您的
文档。getElementById(problemFormId)
调用…您可能自己将字段设置为文本变量而没有意识到它。

显然,您在某处有一个
小时(序列号)
函数,覆盖了全局小时变量。因此,请重命名该函数或变量


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

对于想要帮助Mitch的人来说:开始按钮是'submit'类型的吗?不应该是。@Ron-感谢您将其发布到JSFIDLE。net@amadeus-不,这不是“提交”,而是“输入”。我已将全部文本发送到我的+Dur字段:这是retu使用这个字符串:function hour(serial_number){if(!isFinite(serial_number))return number.NaN;var res=Math.floor((serial_number-Math.floor(serial_number))*86400+0.5;return Math.floor(res/3600);}:00:34最后的时间是我想要的。我已经处理了关于刷新页面的问题(它不再这样做)。我想知道为什么它不仅返回我要求的值,而且还返回生成值的代码的一部分。该代码来自何处?我如何摆脱它?我已将全部文本发送到我的+Dur字段:它返回以下字符串:函数小时(序列号){if(!isFinite(序列号))return Number.NaN;var res=Math.floor((serial_Number-Math.floor(serial_Number))*86400+0.5);return Math.floor(res/3600);}:00:34结尾的时间就是我想要的时间。我已经处理了刷新页面的问题(它不再这样做)。我想知道为什么它不仅返回我要求的值,而且还返回生成值的代码的一部分。此外,当按“重置”时,它不会清除任何值。但是,值得注意的是,开始和结束字段的时间值正在过账。我假设在我将var小时更改为之后,您的回答是正确的var ghour I不再对“我的持续时间”字段中显示的代码有任何问题'函数-仅通过按钮调用它…我想我将采取简单的方法,为按钮添加属性,并使用相同的document.getElementById为我提供所需的功能,而不会带来任何痛苦。感谢您的时间和耐心。