Javascript:未定义的数组不是对象

Javascript:未定义的数组不是对象,javascript,scripting,photoshop,extendscript,Javascript,Scripting,Photoshop,Extendscript,对不起,如果这个问题已经被问到了。我发现了未定义的错误,但不适用于数组,因此我的问题是: 当我试图用给定数组声明selRef41时,出现“undefined is not a object”错误。 (顺便说一句,我正在使用ESTK,我正在为Photoshop编写这个脚本) 对应的main只是一个调用函数的一行程序: function main() { createSelection(layRef); } 您在哪里找到这个layRef.width.value?层没有宽度或高度属性(只有文档有),

对不起,如果这个问题已经被问到了。我发现了未定义的错误,但不适用于数组,因此我的问题是:

当我试图用给定数组声明selRef41时,出现“undefined is not a object”错误。 (顺便说一句,我正在使用ESTK,我正在为Photoshop编写这个脚本)

对应的main只是一个调用函数的一行程序:

function main() {
createSelection(layRef);
}

您在哪里找到这个
layRef.width.value
?层没有
宽度
高度
属性(只有文档有),这是导致代码出错的原因。您可以使用其
边界计算宽度和高度

var layRef = docRef.activeLayer;
refWidth = layRef.bounds[2] - layRef.bounds[0];
refheight = layRef.bounds[3] - layRef.bounds[1];
alert([refWidth,refheight]);
您可以通过检查来检查DOM对象的属性和方法


此外,正如cybernetic.nomad所指出的,这是行不通的:
layRef=app.activeLayer,加上你有
if(detailFactor==“2x2”)
,但是
detailFactor
没有被分配。

没有看到实际的错误,这有点难以精确定位,但我猜可能是
app
或者
layRef
未定义的
。您还应该缩进代码以便更易于阅读。错误“未定义为对象”正好发生在行(var selRef41=Array..)处。对不起,我忘了提那件事。这有助于找出错误吗?我尝试在函数上方定义
layRef
<代码>应用程序
不应该是个问题,因为我也可以省略它(在ESTK中测试)。检查你函数中的app.activeLayer-它有值吗?如果我让Photoshop alert'app.activeLayer'显示它是当前选中的。我现在使用'layRef.bounds[3]-layRef.bounds[1]'来获得高度,使用'parseInt'来消除px结尾,但是现在我在'layRef.selection.select(selRef41)')处得到一个错误。与上面相同的错误,但应该定义。我不认为ArtLayer对象具有宽度或高度属性(从这里的内存开始,因此您应该检查Photoshop脚本参考)。在一个不相关的注释中,
layRef=app.activeLayer应为
layRef=docRef.activeLayer感谢您的提及,我添加了您和cybernetic.nomad建议的部件,效果良好。虽然使用边界并不是我只想获得部分层的高度和宽度的目的,所以我只是在一个新文档中打开文件并在那里编辑,将数据保存在一个数组中,结果很好
detailFactor
已声明为全局变量,抱歉!我想知道,你是怎么想的,所以我们只给出了w和h的一部分?
var layRef = docRef.activeLayer;
refWidth = layRef.bounds[2] - layRef.bounds[0];
refheight = layRef.bounds[3] - layRef.bounds[1];
alert([refWidth,refheight]);