0

我正在努力让这个工作。该dispatch()功能似乎被触发(通过警报测试),但这些innerHTML行似乎不起作用。

此外,i尽管i++.onSubmit

这是有问题的功能:

function dispatch(passengers,i,timesArray)
{
    alert('value of i is '+i);
    timesArray[i]=getTime();

    var avTime=getAverageTime(timesArrary);

    var throughput=passengers*3600000/avTime;

    if(i==0)
    {
        document.getElementById('output').innerHTML = 'Calculating...';
    }
    else
    {
        document.getElementById('output').innerHTML = throughput;
    }
    //and possibly a list (w/e)
}

这是表格:

<form method="post" action="javascript:void(0);" name="applesForm" onSubmit="dispatch(document.applesForm.numPassengers.value, num, times);i++;">
    <input type="text" name="numApples" id="numPassengers" />
    <br/>
    <input type="submit" name="Submit" value="Press on Dispatch!"/>
</form>

这可能是无法从函数内部更改全局变量的问题吗?

或者,使功能停止的avTimeor行是否有问题?throughput

谢谢。

4

2 回答 2

2

在这一行:

<form method="post" action="javascript:void(0);" name="applesForm" onSubmit="dispatch(document.applesForm.numPassengers.value, num, times);i++;">

i是一个全局变量,但 indispatch() i是一个不在全局范围内的参数。它在dispatch()该函数的本地范围内,不能在全局范围内增加。因此我认为你onSubmit()应该是:

onSubmit="dispatch(document.applesForm.numPassengers.value, num, times);num++;">
于 2012-08-31T20:28:34.473 回答
0

为什么在函数外增加变量?它不应该在函数内部并在那里增加吗?

此外,如果 num 是全局的,则不需要将其作为参数传递。

// global
var num = 0;

function dispatch(passengers, timesArray)
{
    alert('value of num is ' + num);
    timesArray[num]=getTime();

    var avTime = getAverageTime(timesArrary);

    var throughput = passengers * 3600000 / avTime;

    if(num == 0)
    {
         document.getElementById('output').innerHTML = 'Calculating...';
    }
    else
    {
        document.getElementById('output').innerHTML = throughput;
    }
    //and possibly a list (w/e)

    // increasing num here!
    num++;
}

然后,您的表单可以删除变量的增加以及调用中的 num。

<form method="post" action="javascript:void(0);" name="applesForm" onSubmit="dispatch(document.applesForm.numPassengers.value, times)">

干杯,阿波克。

于 2012-08-31T21:28:00.857 回答