2015-10-15 61 views
-2

所以我有这段代码用于在包含4个面板的photoshop中创建一个对话框。当我没有通过循环运行它时,它运行良好,但代码笨重且难看。现在我收到一个错误,说“panel1未定义”。我不能像这样在数组中放置对象吗?包含阵列中的对象的Javascript

// create a dialog window, dig.panel = dialog panel 
var dig = new Window('dialog', 'Poster Interface - Choose 4 Images', [550, 120, 1150, 800]); 

//define variables for panel dimensions 
var digX = 100; 
var digY = 50; 
var digWidth = 510; 
var digHeight = 140; 
var digUp = 110; 

var panels = [ 
    [panel1, panel2, panel3, panel4] 
]; 
var labels = [ 
    [label1, label2, label3, label4] 
]; 
var texts = [ 
    [t1, t2, t3, t4] 
]; 
var buttons = [ 
    [bt1, bt2, bt3, bt4] 
]; 


//create panels for the image components 
//first loop for panel dimensions multiply by x 
// nested loop for contents using i 

for (x = 0; x < 4; x++) { 
    dig.panels[x] = dig.add('panel', [digX, digY + (digUp * x), digWidth, digHeight + (digUp * x)], 'Image ' + (x + 1) + ':'); 
    for (i = 0; i < 4; i++) { 
     dig.panels[i].labels[i] = dig.panels[i].add('statictext', [20, 20, 120, 40], 'Choose Image' + (i + 1) + ':'); 
     dig.panels[i].texts[i] = dig.panels[i].add('edittext', [125, 20, 325, 40], 'image' + (i + 1) + '.jpg'); 
     dig.panels[i].buttons[i] = dig.panels[i].add('button', [330, 20, 380, 40], 'Open'); 
    } 
} 

这是破坏我的头。任何意见,将不胜感激

+0

你有'var panels = [[panel1,panel2,panel3,panel4]];'但是'panel1'从哪里来? – arcyqwerty

+0

这里可能缺少一些引用? – Jesse

+0

我想我会开始意识到。我正在申报,但没有初始化? –

回答

0

在Javascript中创建一个数组变量:

var var1 = "value"; 
var var2 = "value"; 

var array = [var1,var2]; 

你正在创建一个数组,里面坐了一个数组,与内部数组中的变量。

var panels = [ 
[panel1, panel2, panel3, panel4] 
]; 

您没有向我们显示那些变量已被定义。

这里是一个小提琴:

https://jsfiddle.net/chrislewispac/rfhq01L3/

用下面的代码:

var var1 = "value"; 
var var2 = "value"; 

var array = [var1,var2]; 
var array2 = [[var1,var2]]; 

console.log(array); 
console.log(array2); 

去那里看看控制台。你会注意到array2的长度只有1,而array的长度是2.所以,你需要定义你的变量,然后以你想要的格式构建数组(你真的想要一个数组数组吗?)然后你可以循环和添加属性。

此外,一个对象意味着在JavaScript中的东西。在JavaScript中,通常会看到使用对象字面值语法创建的对象。

Object = { 
property1 : "property", 
property2: "property" 
} 

所以当你问你是否可以有一个对象数组,是的,你可以。但是,您必须先创建这些对象及其属性。

+0

好的,谢谢你,我认为生病就回到它没有循环的方式。 –

+0

不要放弃!你能行的! :-D尝试更多,然后回来并提出具体问题! –

相关问题