2012-08-31 137 views
0

我很努力使這個工作。 dispatch()函數似乎正在觸發(通過警報測試),但innerHTML行似乎不起作用。函數中的innerHTML(全局變量?)

此外,i似乎並沒有增加,儘管在onSubmiti++

這裏是有問題的功能:

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線路正在使功能停止嗎?

謝謝。

+1

您的代碼中包含一個錯字timesSort,這將導致該函數的執行停止。錯字是否出現在代碼的實際副本中? –

+0

你可以嘗試通過你的函數走過'alert',看看它失敗的地方。 –

+0

謝謝,錯字消失了。這個函數似乎在'timesArray [i] = getTime();'失敗,',這行會不會成功改變times [num]'? – Jess

回答

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++;"> 
+0

謝謝,_i_應該只存在於函數內部。但它仍然失敗。 – Jess

+0

嘗試從'dispatch()'返回false,以防止實際提交表單。 – Teemu

+0

雖然這不是最終的問題,但增加了「返回false」。 – Jess

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)"> 

Cheers,Apoc。