我试图在一个旧的liferay项目(3.6)中使用不引人注目的日期选择器,我相信它正在运行prototype.js。
我有一个这样的电话:
datePickerController.createDatePicker({formElements:{"elementId":"%d/%m/%Y"}});
made to this:
createDatePicker: function(options) { addDatePicker(options); },
我不能使用变量来代替硬编码的元素id。我试过数组索引,点索引,字符串变量等,但不能让它工作。
在我看来,被调用的函数只是想要一个一般未指定的对象,然而如果我做了上面的一个(数组,点等),浏览器就会报错括号(数组索引),点(点索引),双亲或任何其他不是预期格式的东西。
底层调用模块(addDatePicker)期望formElements,所以我不能改变它。
我不明白浏览器如何知道足够抱怨函数参数的格式…显然我在这方面很欠缺!
指针非常感谢。
。
obj[tag] = 'elementId';
datePickerController.createDatePicker({formElements:{obj[tag]:"%d/%m/%Y"}});
// SCRIPT1003: Expected ':'
不能将变量键放在对象字面值中——语法要求键必须是常量。
你需要创建对象并填充它,然后传递给它:
var obj = {};
var tag = 'elementId';
obj[tag] = "%d/%m/%Y";
// you now have obj = { elementId: "%d/%m/%Y" }
...createDatePicker({ formElements: obj });