苏菲的世界txt 新浪:★☆☆ JS中FOR循坏与表单控件的问题 在线等!

来源:百度文库 编辑:神马品牌网 时间:2024/05/07 08:13:24
for(var i=0;i<20;i++)
{
document.Calc.num[i].value=arrayNum[0][i];
}

如上,这是一个保存在*.js中的javascript网页代码,它位于一个自定义函数(function)中。

名为Calc的表单中有num0到num20这21个按钮控件,我使用FOR循环将他们的VALUE(按钮显示的文字)付值为arrayNum这个二位数组中值。

但是运行后,网页出错!经过笔者检查,发现是num[i]这里出错,笔者尝试把它改成num0到num29中的任意一个都能使网页工作,唯独不能num[i]不能!(我记得在C语言中就是这么用的,不知道js和c在这里是否有差异?)

把上面的代码用最老土的办法写出来就是
document.Calc.num[1].value=arrayNum[0][1];
document.Calc.num[2].value=arrayNum[0][2];
document.Calc.num[3].value=arrayNum[0][3];
……
document.Calc.num[20].value=arrayNum[0][20];

但这样写实在太没面子了``我一定要弄清楚是怎么回事情!
——————————————————————————————————————————————————
回复zh_cn:你没看到我的意思!我已经明确告诉你我发现问题所在了,就是用 num[i] 表示 num+i(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>

试试
eval('document.Calc.num['+i+'].value=arrayNum[0]['+i+'];')