[英]innerHTML in function (Global variables?)
我很难让这个工作。 dispatch()
函数似乎被触发(使用警报测试),但innerHTML
行似乎不起作用。
此外,尽管onSubmit
的i++
, i
似乎并没有增加。
这是有问题的功能:
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>
这可能是一个无法从函数内部更改全局变量的问题吗?
或者, avTime
或throughput
线是否有问题导致功能停止?
谢谢。
在这一行:
<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++;">
为什么变量在函数外增加? 它不应该在功能内并增加吗?
此外,如果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)">
干杯,Apoc。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.