Javascript datePicker控制器:硬编码字符串工作,变量不

时间:2011-11-30 04:53:59

标签: javascript

我正在使用可在此处找到的datePicker:

http://www.frequency-decoder.com/2011/10/11/unobtrusive-accessible-datepicker-widgit-v6

我工作正常,只要我硬编码对象的id。即。

var newid = "date" + maxidOnce.toString();
        datePickerController.createDatePicker({                           
            formElements:{"date1":"%Y-%m-%d"},
            statusFormat:"%l, %d %F %Y", 
            noFadeEffect:true
        }); 

但是如果我用变量替换id,它就不再起作用了。我看不出有什么不同。

var newid = "oncedate" + maxidOnce.toString();
        datePickerController.createDatePicker({                           
            formElements:{newid:"%Y-%m-%d"},
            statusFormat:"%l, %d %F %Y", 
            noFadeEffect:true
        }); 

1 个答案:

答案 0 :(得分:6)

  

我看不出有什么不同。

不同之处在于,使用object literals时,JavaScript对象键不会被解释为变量。请改用bracket notation

var newid = "oncedate" + maxidOnce;
var formElts = {};
formElts[newid] = "%Y-%m-%d";
datePickerController.createDatePicker({                           
    formElements: formElts,
    statusFormat: "%l, %d %F %Y", 
    noFadeEffect: true
});

// or, to write it another way,
var newid = "oncedate" + maxidOnce;
var options = {                           
    formElements: {},
    statusFormat: "%l, %d %F %Y", 
    noFadeEffect: true
};
options.formElements[newid] = "%Y-%m-%d";
datePickerController.createDatePicker(options);