0
首先,您可以通过我的代码得知,我不是程序员,我不知道JavaScript。我实际上正在使用VMware Orchestrator(基于Rhino JavaScript引擎,我相信)来创建一些工作流程。请详细解释任何答案。Javascript:为在VMware vCenter中创建目录树而进行循环嵌套
我想创建一个工作流程,在vCenter中创建一个目录树。
概念: 基本上我试图为调用全局树的树的每一层运行嵌套for循环。
问题: 1st for循环工作并创建文件夹“Dev”。第二个for循环不与错误信息的工作:
[2013-06-27 19:16:16.219] [I] Building folder Dev
[2013-06-27 19:16:16.474] [I] Built directory: Dev
[2013-06-27 19:16:16.476] [I] Building folder Servers
[2013-06-27 19:16:16.480] [I] TypeError: Cannot find function createFolder in object Dev. (Workflow:TEST_TNG_New_Site_Folder_Structure/Scriptable task (item2)#36)
我认为这与JavaScript不能够调用全局函数到嵌套对象做(我不是一个程序员,不知道的JavaScript所以不要拍我在此)
代码:(将一旦我得到它的工作清理它)
var folderBase = ["Dev","DMZ","Prod","UAT"];
var folderT1 = ["Servers","Workstations"];
var folderT2 = ["Windows","Linux"];
var folderT3 = ["Repo1","Repo2","Repo3","Repo4"];
var folderT4 = ["T1","T2","T3"];
// Create the folderBase level of folders
for (var i=0,l=folderBase.length; i<l; i++) {
var rootFolder = parentFolder;
buildFolderTree(folderBase[i]);
// Create the folderT1 level of folders
for (var j=0, l=folderT1.length; j<l; j++) {
var rootFolder = folderBase[i];
buildFolderTree(folderT1[j]);
// Create the folderT2 level of folders
for (var k=0, l=folderT2.length; k<l; k++) {
var rootFolder = folderT1[j];
buildFolderTree(folderT2[k]);
// Create the folderT3 level of folders
for (var x=0, l=folderT3.length; x<l; x++) {
var rootFolder = folderT2[k];
buildFolderTree(folderT3[x]);
// Create the folderT4 level of folders
for (var y=0, l=folderT4.length; y<l; y++) {
var rootFolder = folderT3[x];
buildFolderTree(folderT4[y]);
}
}
}
}
}
function buildFolderTree(folderName) {
System.log("Building folder " + folderName);
rootFolder.createFolder(folderName);
System.log("Built directory: " + folderName);
}
你有一个问题是JavaScript只有函数级作用域,所以你所有的循环索引和长度变量都需要有不同的名字。在你的示例中,特别是长度变量都被称为'l',它们应该有不同的名字,比如'il','jl'等(或者你选择的)。 – WildCrustacean