我很困惑为什么Javascript计算的结果没有出现在id“Between”的输入字段中。我通过jshint.com运行JS,发现没有错误。这将在html页面的iPhone环境中使用。我是JS的新手。我在其他地方找到了一些简单的数学代码并按照你在这里看到的形状进行了按摩。你可以让JS编码器告诉我我的脚本出错了吗?
function heatpit(form) { var e = form.elements.LENGTH.value, // put LENGTH (number of minutes) field value into variable e f = form.elements.STOPS.value, // put STOPS field value into variable f secs2 = e * 60, // convert the minutes into seconds periods = f + '1', // add 1 to the pit stop number get the total number of divisions throughout the LENGTH result2 = secs2 / periods, // divide the LENGTH by the number of periods seconds = result2 % 60, // use modulus operator to get the remainder and convert it into seconds figure minutes = Math.floor(result2 / 60), // get the minute figure as a digit time = minutes + ":" + seconds; // concatenate everything into minutes and seconds form.elements.between.value = time; // display "time" value in the "between" field } var resultPitStops = document.getElementById('resultPitStops'); resultPitStops.onclick = function () { var form = document.getElementById('form2'); heatpit(form); };
答案 0 :(得分:-1)
首先,你有逗号作为每个语句的结尾。它们应该是分号:
var e = form.elements.LENGTH.value;
^---semicolon
var f = form.elements.STOPS.value;
etc...
然后:
periods = f + '1'
从表单字段中检索 f
,Javascript将这些值视为字符串,因此您正在执行的操作是获取字符串,并与另一个字符串连接。如果止损值为123
,则您获得1231
,而不是124
。
然后取出1231
的字符串值并将其用作除数。很可能javascript将它转换为'0',因此你会产生一个被零除错误。
所以...检查浏览器的javascript错误控制台。在Firefox中,只需按下shift-ctrl-J即可弹出它。并在函数执行时注意错误。