dynamicvariables名称在JavaScript中
我有变数:
var variableDynamic = 1; // or var variableDynamic = 1 + i++;
有什么办法来使用它来创builddynamicvariables名称,例如这样的事情:
var variableName + variableDynamic = {}; // or var (variableName + variableDynamic) = {};
我知道我上面写的是荒谬的,但这是解释这个想法。 可能吗?
好吧,我想要做什么来创build元素(上传表单)每次用户点击添加新的文件组,一切都工作正常,除了我用它的插件需要特殊variables为每个上传表单触发上传button(.uploadStoredFiles ())。
这是我做的粗略的代码:
$('#addOneMoreFileOrGroup').on('click', function(){ var latestFileUploaderId = parseInt($('.well-large .file-uploader').last().attr('id').split('-')[2]) + 1; $('.well-large .control-group:last').after('<div class="control-group deal-type-online"> \ <label class="control-label">File / File Group Title:</label> \ <div class="controls"> \ <input class="span4 file-title" type="text"> \ <span class="question label label-warning" data-title="File / Group Name:" data-content="Name for your file or group of related files (for example your brand logotype in different file formats)." data-original-title="">?</span> \ <div id="file-uploader-' + latestFileUploaderId + '" class="file-uploader"></div> \ </div> \ </div>'); var HERE_I_NEED_DYNAMIC_VAR = new qq.FileUploader({ element: document.getElementById('file-uploader-' + latestFileUploaderId + ''), action: 'do-nothing.htm', autoUpload: false, debug: true, uploadButtonText: '<i class="icon icon-plus"></i> Select Files...', onSubmit: function() { $('#file-uploader-' + latestFileUploaderId + ' .qq-uploader').after('<button id="file-uploader-trigger-' + latestFileUploaderId + '" class="btn btn-primary"><i class="icon-upload icon-white"></i> Upload now</button>'); $('#file-uploader-trigger-' + latestFileUploaderId + '').on('click', function() { if($(this).parent().parent().parent().parent().find('.file-title').val() !== '') { HERE_I_NEED_DYNAMIC_VAR.uploadStoredFiles(); } else { $(this).parent().parent().parent().addClass('error'); } }); } }); }); }
在JavaScript中,对象的属性可以通过obj.prop
或obj['prop']
。
在全局范围内,所有variables都是window
属性的子项。 所以你可以做到:
var variableDynamic = 'Test'; window['variableName' + variableDynamic] = 'your value';
看看这个小提琴 。
但是,如果您想将此variables的作用域限制为一个函数,则必须定义一个父对象并使用它来代替window
。
您可以使用eval
创builddynamicvariables。
eval("dynamic" + i + " = val[i]");
另外看看这个: 在JavaScript中使用dynamicvariables名称
要添加到FAngels答案,您可以在任何地方使用括号表示法。 这意味着除了使用window['var']
,你可以使用this['var']
。
我不认为eval()
是邪恶的必然 – 它只是有时被滥用。 它的任务是把一个string和“评价”到JavaScript代码( MDN ),所以如果你需要dynamic设置variableseval()
是这样做的一种方法:
var t = 't'; var four = '4'; eval('var ' + (t + four) + ' = "some value";'); console.log(t4); // returns "some value" to the console
有可能更好的方法来影响dynamicvariables+值对,不仅仅是因为经过评估的代码string是在全球范围内实现的,但上面的方法是有效的。 问题是,它是你想达到什么的最好方法(?)。 有关`eval()'的讨论,请参阅NCZOnline的2013年博客文章 。
为此,您可以使用eval()
。 但eval()
是邪恶的。 你应该使用这样的数组。
例:
var i = 1337; eval('var myvar' + i + ' = \'value\';'); alert(myvar1337);
不知道如何可以在函数范围内完成,但全局variables可以像这样创build:
window[variableName + variableDynamic] = {}
我不认为你可以在JavaScript中创builddynamicvariables名称,但是你可以通过string设置对象属性。 所以如果你创builddynamicvariables作为一个对象的属性,你可以完成你的目标。