如何在Javascript文档调用中放置变量?

时间:2010-11-01 11:57:43

标签: javascript variables

我正在尝试创建一个字符串以传递给包含大量变量的PHP文件。 Javascript代码遍历一组变量 - 其名称对应于页面上表单中的复选框。如果已在下面的表单中检查了数组中变量的名称,那么它会将变量的名称添加到发布到PHP文件的字符串中。这是代码:

 var datesStr = ["L2010L04L01", "L2010L04L02", "L2010L04L06", "L2011L01L07", "L2010L10L09", "L2010L07L09", "L2011L05L10"]; //etc. This is a sample; the list is much longer.
   var sendStr = "";

   for (var i in datesStr) {

   if(document.swapOptions.datesStr[i].checked == true) {
     sendStr = sendStr+"&to"+i+"="+datesStr[i];
   }

   }

但是由于某些原因,当我将变量放入document.swapOptions行时会出现问题。我也试过了,但它不起作用:

   
var datesStr = ["L2010L04L01", "L2010L04L02", "L2010L04L06", "L2011L01L07", "L2010L10L09", "L2010L07L09", "L2011L05L10"]; //etc. This is a sample; the list is much longer.
   var sendStr = "";
var intermedDatesStr = "";

   for (var i in datesStr) {

   intermedDatesStr = document.swapOptions.datesStr[i];

   if(intermedDatesStr.checked == true) {
     sendStr = sendStr+"&to"+i+"="+datesStr[i];
   } 
   }

但它也不起作用。我认为浏览器正在寻找名为“intermedDatesStr”的形式的对象。有没有办法引用保持变量值的对象?在这里的任何帮助将非常感谢!

谢谢, 本

1 个答案:

答案 0 :(得分:1)

在动态访问属性时需要使用bracket notation,如下所示:

var datesStr = ["L2010L04L01", "L2010L04L02", "L2010L04L06", "L2011L01L07", "L2010L10L09", "L2010L07L09", "L2011L05L10"]; //etc. This is a sample; the list is much longer.
var sendStr = "";
var intermedDatesStr = "";
for (var i=0; i<datesStr.length; i++) {
  if(document.swapOptions[datesStr[i]].checked == true) {
    sendStr = sendStr+"&to"+i+"="+datesStr[i];
  } 
}

这访问了这样的属性:

document.swapOptions["L2010L04L01"]
//which is the same as:
document.swapOptions.L2010L04L01

另一个更改是使用正常的for循环,for...in循环不是迭代数组的正确方法,您将获得其他继承的属性,而不一定是您期望的顺序。