我正在创建一个Javascript循环,可以放在程序中而不是编写
document.entry.(a_ to z_).value=(ax to zx);
到目前为止我的工作:
function param() {
var counter2 = "ax bx cx dx fx gx hx ix jx kx lx mx nx ox px qx rx sx tx ux vx wx xx yx zx";
var alph2=counter2.split(" ");
for (var i=0;i<26;i++){
counter2[i]=1;
}
var letters2 = ".a_ .b_ .c_ .d_ .e_ .f_ .g_ .h_ .i_ .j_ .k_ .l_ .m_ .n_ .o_ .p_ .q_ .r_ .s_ .t_ .u_ .v_ .w_ .x_ .y_ .z_ ";
var let2=letters2.split(" ");
var entry = document.getElementById("entry");
document.entry[let2[i]].value=alph2[i];
}
但是,Chrome显然不喜欢倒数第二行,称其为cannot set value of undefined
- 而“entry”是HTML中的一种形式。
我是Javascript初学者,非常感谢您的耐心: - )
答案 0 :(得分:0)
counter2[i]=1;
该怎么办? counter
是一个原始字符串,所以这根本没有效果。
entry.(a_ to z_).value let2 = [".a_", ".b_", …] entry[let2[i]].value
如果您使用括号表示法,则需要省略点符号属性访问中的点。它应该只是数组中的属性名称:
let2 = ["a_", "b_", …]
此外,您没有循环遍历let2
数组,只是访问其中的i
值 - 其中i
的值仍为26
。绕过for
循环。
除此之外,您可以使用String.fromCharCode
轻松生成连续的字母,您无需在字符串或数组中列出整个字母。更好:
var els = document.forms.entry.elements;
for (var i=0; i<26; i++) {
var chr = String.fromCharCode(97 + i),
alph = chr + "x",
lett = chr + "_";
if (els[lett] != null)
els[lett].value = alph;
}