Javascript 从脚本创建数组,然后通知内容
我创建了一个脚本来创建一个名为spots的新数组,下面是脚本:Javascript 从脚本创建数组,然后通知内容,javascript,arrays,Javascript,Arrays,我创建了一个脚本来创建一个名为spots的新数组,下面是脚本: main(); function main() { var doc = app.activeDocument; var selectedSwatches = doc.swatches.getSelected(); var pageNumber = 1; var count = 0; if (selectedSwatches.length > 0) { var text =
main();
function main() {
var doc = app.activeDocument;
var selectedSwatches = doc.swatches.getSelected();
var pageNumber = 1;
var count = 0;
if (selectedSwatches.length > 0) {
var text = 'var spots = new Array(\n';
for (var i = 0; i < selectedSwatches.length; i++) {
var swatch = selectedSwatches[i]
var color = swatch.color;
// Spot
if (color.typename == "SpotColor") {
count++;
text += '"' + color.spot.name + '", ' + "\n";
color = color.spot.color;
if (count % 10 == 0)
pageNumber++;
}
}
var textend = ');';
var textArray = text + textend;
alert(textArray);
} else {
alert("No Swatches Selected.");
}
}
我现在如何提醒该数组的内容,即黄色012 C,亮红色C
我试过使用:
alert(spots);
但是我得到了一个未定义的错误,可能是因为数组是动态创建的,而它没有放在脚本中
更新:
根据评论,我编辑了脚本,添加了:
var spots = [];
spots.push(color.spot)
alert(spots);
我现在得到以下错误:undefined不是对象
这是完整的脚本
main();
function main() {
var doc = app.activeDocument;
var selectedSwatches = doc.swatches.getSelected();
var pageNumber = 1;
var count = 0;
if (selectedSwatches.length > 0) {
var text = 'var spots = new Array(\n';
for (var i = 0; i < selectedSwatches.length; i++) {
var swatch = selectedSwatches[i]
var color = swatch.color;
// Spot
if (color.typename == "SpotColor") {
count++;
text += '"' + color.spot.name + '", ' + "\n";
color = color.spot.color;
if (count % 10 == 0)
pageNumber++;
}
}
var textend = ');';
var textArray = text + textend;
var spots = [];
spots.push(color.spot)
alert(spots);
} else {
alert("No Swatches Selected.");
}
}
main();
函数main(){
var doc=app.activeDocument;
var selectedSwatches=doc.swatches.getSelected();
var pageNumber=1;
var计数=0;
如果(selectedSwatches.length>0){
var text='var spots=新数组(\n';
对于(变量i=0;i
试试看
函数main(){
//var doc=app.activeDocument;
变量选择样本
=[{“color”:{“spot”:{“color”:“#ff0000”,“name”:“red”},“typename”:“SpotColor”}
,{“color”:{“spot”:{“color”:“#000000”,“name”:“black”},“typename”:“SpotColor”}];
//=doc.swatches.getSelected();
var pageNumber=1;
var计数=0;
var点=[];
如果(selectedSwatches.length>0){
对于(变量i=0;i
Main
您在声明Main()函数之前调用了它。尝试将main()放在函数下面block@elpmid这没关系,结果是一样的,因为您创建的是字符串,而不是数组。您应该使用var-spots=[]编码>然后使用spots.push(color.spot.name)
。然后,spots
将是一个实际数组。@DominiqueFortin没有名为spots
@elpmid的变量,只要main
函数声明在函数范围内,它就可以在调用之后运行,因为在javascript中,函数和var
被提升到函数范围。您的代码确实有效,但当将“selectedSwatches”替换为我自己的,因为我没有定义错误。您必须放置一个断点并查看doc
和doc.swatches的状态。我对Javascript不熟悉,这是什么意思?上面的脚本从adobe的样例创建数组。@juanman看。Firefox和Edge的原理是相同的。要访问DevTools,请右键单击页面,然后在关联菜单中单击Inspect
。
main();
function main() {
var doc = app.activeDocument;
var selectedSwatches = doc.swatches.getSelected();
var pageNumber = 1;
var count = 0;
if (selectedSwatches.length > 0) {
var text = 'var spots = new Array(\n';
for (var i = 0; i < selectedSwatches.length; i++) {
var swatch = selectedSwatches[i]
var color = swatch.color;
// Spot
if (color.typename == "SpotColor") {
count++;
text += '"' + color.spot.name + '", ' + "\n";
color = color.spot.color;
if (count % 10 == 0)
pageNumber++;
}
}
var textend = ');';
var textArray = text + textend;
var spots = [];
spots.push(color.spot)
alert(spots);
} else {
alert("No Swatches Selected.");
}
}