函数中的innerHTML(全局变量?)

时间:2012-08-31 20:16:45

标签: javascript javascript-events

我很难让这个工作。 dispatch()函数似乎被触发(使用警报测试),但innerHTML行似乎不起作用。

此外,尽管ii++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>

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

或者,avTimethroughput行是否有问题导致函数停止?

感谢。

2 个答案:

答案 0 :(得分:2)

在这一行:

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

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

onSubmit="dispatch(document.applesForm.numPassengers.value, num, times);num++;">

答案 1 :(得分: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++;
}

然后你的表单可以放弃变量的增加,以及来自调用的数字。

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

干杯,Apoc。