新都第三人民医院科室:Javascript FOR循坏中i的问题?在线等!

来源:百度文库 编辑:高校问答 时间:2024/05/02 19:20:45
在一个js文件中定义了一个自定义函数,其中包括以下代码

for(var i=0;i<20;i++)
{

document.Calc.num[i].value=arrayNum[0][i];
}

我这么写``结果出错了!
我的思路是:在Calc这个表单有20个按钮(num0到num20) 我想让所有这些按钮的值变成
二位数组arrayNum中 array[0][0]到array[0][20]

那里错了``清说出来!
问题补充:我测试发现````问题出在 num[i] 这里

难道不能这么表示?

——————————

数组越不越界无所谓!! 我随便说的一个`````````

关键是 num[i] 如果用 num1 则测试发现正常工作

但是为了表示 num0 ~ num20 该怎么办

因为你没有定义数组,当然会出错了。JavaScript虽然是隐式确定变量类型,但是也要你初始化一下,解释器才能知道你要的是什么类型的变量。比如:
var a = "asdf";//解释器知道a是一个字符串
var b = true; //解释器知道b是一个布尔值
同样,要建立一个数组,你需要用以下语句:
var c = new Array();

js的数组是自动增长的,不需要预分配空间,想在哪里插入就在哪里插入。当然,数组下标不能高于2的32次方。它更像 Java 中的ArrayList而不是数组。下面是我写的一个例子,应该能解答你的问题。把下面的代码粘贴到记事本里面另存为htm,打开就可以看了。
<html>
<body>
<input name="in_1" type="text">
<input name="in_2" type="text">
<input name="in_3" type="text">
<input name="in_4" type="text">
<input name="in_5" type="text">
<input name="bt_1" type="button" value="测试1">
<input name="bt_2" type="button" value="测试2">
<input name="bt_3" type="button" value="测试3">
<input name="bt_4" type="button" value="测试4">
<input name="bt_5" type="button" value="测试5">
<input name="bt_6" type="button" onclick="javascript:on_clickBt6();" value="测试6">
</body>
</html>
<script language="javascript">
//声明数组
var jsArr1 = new Array();
var jsArr2 = new Array();
var jsArr3 = new Array();

//添加输入框到数组
jsArr2[0] = document.all.in_1;
jsArr2[1] = document.all.in_2;
jsArr2[2] = document.all.in_3;
jsArr2[3] = document.all.in_4;
jsArr2[4] = document.all.in_5;

//添加按钮到数组
jsArr3[0] = document.all.bt_1;
jsArr3[1] = document.all.bt_2;
jsArr3[2] = document.all.bt_3;
jsArr3[3] = document.all.bt_4;
jsArr3[4] = document.all.bt_5;

//添加子数组到主数组
jsArr1[0] = jsArr2;
jsArr1[1] = jsArr3;

function on_clickBt6() {
for (var i=0;i<jsArr1.length;i++) {
for (var j=0;j<jsArr2.length && j<jsArr3.length;j++) {
jsArr1[i][j].value = "aa";
}
}
}
</script>

我说呢,怎么也看不出这个程序的毛病.

问题在于你定义的数组上!

你没有定义数组!而是定义了20个变量(好像是21个啊!从NUM0~NUM20);

比如我们这样定义:
for (var i=0; i<20;i++){
eval("num"+i+"="+"array[i]");
}
这样实际上是20个变量;(从NUM0~NUM19)

如果是下面的程序:
arraynum=Array(20);
for (var i=0; i<20; i++){
arraynum[i]=array[i];}
则定义的是一个数组.当然我们也可以不用数组的.因为的EVAL这个函数.

以上的程序可以改为如下,你试一下,(我不建议这样用!)
K=0;
for (var i=0; i<20;i++) {
eval("K=arrayNUM["+i+"]");//这一步的目的是用一个中间变量K;为了使你更清楚!
document.Calc.num[i].value=K;
}
注意区分大小写!顺便多一句,我是JS的老师,建议你以后把所有的程序发出来.因为我们讲的是程序的时空代价的.能更好地个性你的程序!