无法在函数调用中将硬编码的属性名称值替换为变量值



我试图在一个旧的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 });

相关内容

  • 没有找到相关文章

最新更新