Javascript 工作本身很好,但当我把它放在我身体的其他部分时,它就爆炸了
我已经砍掉了一个秒表脚本,使它可以在HTML表单的多次迭代中使用。它使用id标签来识别我按下哪个按钮来启动、结束和重置计时器,将当前时间发布到这些字段,并在第三个字段中运行秒表。原因是,将通过表格跟踪12个重要制造流程的开始/结束/持续时间 我在一个“独立”HTML文件的上下文中编写了这篇文章,以测试它的可行性,它工作得很好。。。然而。。。当我将代码粘贴到我的表单中(表单太大,无法在这里发布)并点击“开始”按钮时,我会将文本发布到“秒表”字段,然后我的页面刷新 下面是我可以阅读的发布到我的字段中的文本(如果必要,我将扩展字段以捕获更多文本)和带有我编写的javascript代码的HTML 发布文本:函数小时(序列号){if(!isFinite(序列号))返回 我编写的代码:Javascript 工作本身很好,但当我把它放在我身体的其他部分时,它就爆炸了,javascript,html,forms,time,stopwatch,Javascript,Html,Forms,Time,Stopwatch,我已经砍掉了一个秒表脚本,使它可以在HTML表单的多次迭代中使用。它使用id标签来识别我按下哪个按钮来启动、结束和重置计时器,将当前时间发布到这些字段,并在第三个字段中运行秒表。原因是,将通过表格跟踪12个重要制造流程的开始/结束/持续时间 我在一个“独立”HTML文件的上下文中编写了这篇文章,以测试它的可行性,它工作得很好。。。然而。。。当我将代码粘贴到我的表单中(表单太大,无法在这里发布)并点击“开始”按钮时,我会将文本发布到“秒表”字段,然后我的页面刷新 下面是我可以阅读的发布到我的字段中
<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为我提供所需的功能,而不会带来任何痛苦。感谢您的时间和耐心。