我正在尝试在旧的liferay项目(3.6)中使用不显眼的日期选择器,我相信它正在运行prototype.js。
我有这样的电话:
datePickerController.createDatePicker({formElements:{"elementId":"%d/%m/%Y"}});
对此做出了:
createDatePicker: function(options) { addDatePicker(options); },
我无法使用变量代替硬编码的elementId。我已经尝试了数组索引,点索引,字符串变量等,但无法使其工作。
在我看来,被调用函数只需要一个通常未指定的对象,但如果我执行上述操作之一(数组,点等),浏览器会抱怨括号(数组索引),点(点索引) ),parens或预期格式以外的任何东西。
底层调用模块(addDatePicker)需要formElements,所以我无法改变它。
我不明白浏览器是如何知道这个函数的参数格式的......我显然在这里很缺乏!
指针非常感谢。
e.g。
obj[tag] = 'elementId';
datePickerController.createDatePicker({formElements:{obj[tag]:"%d/%m/%Y"}});
// SCRIPT1003: Expected ':'
答案 0 :(得分:2)
您不能将变量键放在对象文字中 - 语法要求键是常量值。
您需要创建对象并填充它,然后传递它:
var obj = {};
var tag = 'elementId';
obj[tag] = "%d/%m/%Y";
// you now have obj = { elementId: "%d/%m/%Y" }
...createDatePicker({ formElements: obj });