Javascript-如何基于字符串声明变量名为的变量?

Javascript-如何基于字符串声明变量名为的变量?,javascript,jquery,variables,Javascript,Jquery,Variables,用户“更改”了“大小单元”类别和“存储单元”id。然后我想将'cur_storage_unit'的值设置为'storage_unit'的新值。斜体是我希望它工作的方式,但我不确定如何让它工作的语法。谢谢 可以使用字符串作为键在对象上创建新属性 var cur_storage_unit = $('#storage_unit').val(); $('.size_unit').change(function() { var id = $(this).attr('id'); //Th

用户“更改”了“大小单元”类别和“存储单元”id。然后我想将'cur_storage_unit'的值设置为'storage_unit'的新值。斜体是我希望它工作的方式,但我不确定如何让它工作的语法。谢谢

可以使用字符串作为键在对象上创建新属性

var cur_storage_unit = $('#storage_unit').val();

$('.size_unit').change(function() {
    var id = $(this).attr('id');

    //This is how I want it to work, but not sure how
    'cur_' + id = $(this).val();
});

因此,在您的情况下,您需要一个具有已知名称的对象,您可以在其中添加动态命名的属性。

您可以使用字符串作为键在对象上创建一个新属性

var cur_storage_unit = $('#storage_unit').val();

$('.size_unit').change(function() {
    var id = $(this).attr('id');

    //This is how I want it to work, but not sure how
    'cur_' + id = $(this).val();
});

因此,在您的情况下,您可能需要一个具有已知名称的对象,您可以在其中添加动态命名的属性。

如果它是全局的,您可以执行
窗口['cur\'+id]

如果是全局的,您可以执行
窗口['cur_'+id]

您最好使用对象并将其存储在其中

var myObj = {};
myObj['cur_'+id] = $(this).val();

您最好使用一个对象,并将其存储在其中

var myObj = {};
myObj['cur_'+id] = $(this).val();

当然,这也适用于全局对象,在浏览器中是
window
。所以
window['cur\uu'+id]=…
。不过,更好的做法是避免全局名称空间混乱,并按照lincolnk的建议将所有符号放在一个uber符号中。当然,这也可以应用于全局对象,在浏览器中是
窗口
。所以
window['cur\uu'+id]=…
。不过,更好的做法是避免全局名称空间混乱,并像林肯在这里建议的那样将所有符号放在一个优步符号中。@T.J.克劳德-它是全局的吗?我假设这一切都发生在jQuery的
ready()
@patrick dw:那么你假设的是没有证据的事实。:-)在OP的问题中没有什么可以暗示的。但是我错误地认为,当最初评论说你已经把它移到了一个水平,而在看你没有提到的问题时,它已经在那里了。@t.J.Crowder-很公平:o) 这是一个如此普遍的做法,我倾向于认为它是理所当然的。是的,你是正确的,它正在下。准备好了,谢谢你的帮助@T.J.克劳德-它是全球性的吗?我假设这一切都发生在jQuery的
ready()
@patrick dw:那么你假设的是没有证据的事实。:-)在OP的问题中没有什么可以暗示的。但是我错误地认为,当最初评论说你已经把它移到了一个水平,而在看你没有提到的问题时,它已经在那里了。@t.J.Crowder-很公平:o) 这是一个如此普遍的做法,我倾向于认为它是理所当然的。是的,你是正确的,它正在下。准备好了,谢谢你的帮助!