0

我正在尝试在一个旧的 liferay 项目(3.6)中使用不显眼的日期选择器,我相信它正在运行prototype.js。

我有这样的电话:

datePickerController.createDatePicker({formElements:{"elementId":"%d/%m/%Y"}});

为此:

createDatePicker:       function(options) { addDatePicker(options); },

我无法使用变量代替硬编码的 elementId。我尝试过数组索引、点索引、字符串变量等,但无法让它工作。

在我看来,被调用函数只需要一个通常未指定的对象,但如果我执行上述操作之一(数组、点等),浏览器会抱怨括号(数组索引)、点(点索引)、括号或预期格式以外的任何内容。

底层调用模块 (addDatePicker) 需要 formElements,所以我无法更改它。

我不明白浏览器如何知道足以抱怨函数参数的格式......显然我在这里严重缺乏!

指针非常感谢。

例如

obj[tag] = 'elementId'; 
datePickerController.createDatePicker({formElements:{obj[tag]:"%d/%m/%Y"}});     
// SCRIPT1003: Expected ':'
4

1 回答 1

2

您不能将变量键放在对象文字中 - 语法要求键是常量值。

您需要创建对象并填充它,然后传递它:

var obj = {};
var tag = 'elementId';
obj[tag] = "%d/%m/%Y";
// you now have obj = { elementId: "%d/%m/%Y" }

...createDatePicker({ formElements: obj });
于 2013-04-16T19:56:17.273 回答