for循环中的动态变量名
Dynamic variable names in a for loop
我正在处理一个表单,该表单需要用cookie中的值填充。表单元素的id与cookie名称相对应:
<label>ABC: </label>
<input type="text" id="ABC" />
<br />
<label>DEF: </label>
<input type="text" id="DEF" />
<br />
<label>GHI: </label>
<input type="text" id="GHI" />
<br />
<label>JKL: </label>
<input type="text" id="JKL" />
<br />
最初,我只是写了一个单独的片段来获取每个表单的cookie值:
var ABCdata = getCookie("ABC");
var ABCfield = document.getElementById('ABC');
ABCfield.value = ABCdata;
var DEFdata = getCookie("DEF");
var DEFfield = document.getElementById('DEF');
DEFfield.value = DEFdata;
var GHIdata = getCookie("GHI");
var GHIfield = document.getElementById('GHI');
GHIfield.value = GHIdata;
var JKLdata = getCookie("JKL");
var JKLfield = document.getElementById('JKL');
JKLfield.value = JKLdata;
但后来我想把它重写为数组和循环:
var cookienames = new Array();
cookienames[0] = "ABC";
cookienames[1] = "DEF";
cookienames[2] = "GHI";
cookienames[3] = "JKL";
for (var i=0; i<cookienames.length; i++) {
var cookienames[i]+"data" = getCookie(cookienames[i]);
var cookienames[i]+"field" = document.getElementById(cookienames[i]);
cookienames[i]+"field".value = cookienames[i]+"data";
}
不知怎的,数组解决方案不起作用:表单字段没有填充数据。我怀疑,应该归咎于动态变量名。
处理这个问题的正确方法是什么?
你试过这个吗:
document.getElementById(cookienames[i]).value = getCookie(cookienames[i]);
循环中不需要使用不同的变量。尝试简单的
var cookienames = ["ABC", "DEF", "GHI", "JKL"],
field,
data,
cn;
for (var i = 0, cl = cookienames.length; i < cl; i++) {
cn = cookienames[i]; // get cookie name
data = getCookie(cn); // read cookie value
field = document.getElementById(cn); // retrieve field
field.value = data; // set field value
}
(附带说明一下,以前缓存数组的长度是一种很好的做法)
不能通过这种方式使用var
关键字动态"创建"变量。
但是由于每个全局变量都是window
的一个属性,所以可以这样做:
window[cookienames[i]+"data"] = getCookie(cookienames[i]);
不知道为什么要使用中间变量,这应该可以使用
var cookienames = new Array();
cookienames[0] = "ABC";
cookienames[1] = "DEF";
cookienames[2] = "GHI";
cookienames[3] = "JKL";
for (var i=0; i<cookienames.length; i++) {
var data = getCookie(cookienames[i]);
document.getElementById(cookienames[i]).value = data;
}
相关文章:
- 在Javascript中连接一个动态变量名
- 动态变量名语法
- 动态jQuery变量名
- 使用动态变量名更新JSON中的结果
- 在JavaScript中循环使用动态变量名
- jQuery在for循环中动态递增变量名
- Javascript调用函数-动态变量名
- 如何在ExtJS中创建动态数组变量名
- for循环中的动态变量名
- Javascript:动态变量名与php
- 通过动态名称更新本地变量名
- 动态JavaScript变量名
- 如何在循环中创建动态变量名
- JavaScript的动态变量名-两个数组
- 如何动态地以点表示法呈现变量名
- Angular中的动态作用域变量名
- 在javascript中动态声明变量名
- 动态变量名,避免eval()
- 循环中的动态变量名
- Javascript动态变量名从数组值(Appcelerator Titanium)