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

标签 javascript unobtrusive

我正在尝试在旧的 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 ':'

最佳答案

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

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

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

...createDatePicker({ formElements: obj });

关于javascript - 无法在函数调用中用变量值替换硬编码的属性名称值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16045663/

相关文章:

javascript - 如何在重定向后使用 Javascript 获取 URL 路径?

javascript - 从卡号识别卡类型

.net - 部分 View 没有 data-val* 属性

jquery - CakePHP 和 jQuery - 不显眼的操作

javascript - 如何使用 javascript 转义 "innerHtml"属性中的 html?

javascript - 如何为每个 Web 套接字仅使用一个数据库连接?

javascript - 如何将 URL 转换为 base64 而不输出 '/' 字符?

javascript - 需要帮助让我的 Javascript 不引人注目

ajax - 如何在 Magento 结账时不显眼地添加新的验证方法