为什么我的Javascript代码验证,但没有返回结果?

时间:2011-05-20 17:47:34

标签: javascript forms

我很困惑为什么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);
};


1 个答案:

答案 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即可弹出它。并在函数执行时注意错误。