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++;
}

次に、フォームは変数の増加と呼び出しからの数値を削除できます。

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

乾杯、アポック。

于 2012-08-31T21:28:00.857 に答える