首页 > 解决方案 > Javascript自动增量代码不起作用

问题描述

我需要生成 1000 张图像,每个图像都有不同的数字。这样做是在网上找到了一个可以正常工作的脚本,但它不适用于增量前面的 00 。

我不能只在每个数字前添加 00,因为当它达到 10 时,它会执行 0010 而不是我想要的 010。

这意味着我需要稍微更改代码。它可能真的很基本,但我就是想不通。遗憾的是没有日志,因为我在 Photoshop 中运行脚本。

这是我遇到问题的代码。下面是结果:

  for (var i=1; i <= numImages; i++) {
    
    if(layer.textItem.contents < 10) {
      layer.textItem.contents = "00" + i.toString();
    } else if(layer.textItem.contents >= 10) {
     layer.textItem.contents = "0" + i.toString();
    } else {
      layer.textItem.contents = i.toString();
    }
    SavePNG(directory + imageName + '_'+ i +'.png');
  };

非常感谢任何帮助!我不需要用勺子喂!我需要从错误中吸取教训!

脚本结果的图像,10 未正确生成。 以及 1

这是脚本中的完整代码(忘记添加,后来编辑)

var imageName = 'Oppmoteskjema';
var numImages = 15;

function SavePNG(saveFile){
  var pngOpts = new ExportOptionsSaveForWeb; 
  pngOpts.format = SaveDocumentType.PNG
  pngOpts.PNG8 = false; 
  pngOpts.transparency = false; 
  pngOpts.interlaced = false; 
  pngOpts.quality = 10;
  activeDocument.exportDocument(new File(saveFile),ExportType.SAVEFORWEB,pngOpts); 
}

var layer = activeDocument.layers[0];
if (layer.kind == 'LayerKind.TEXT') {
    for (var i=1; i <= numImages; i++) {
      layer.textItem.contents = i.toString();
      var str = "" + i;
      var pad = "000";
      var ans = pad.substring(0, pad.length - str.length) + str;
      SavePNG(directory + imageName + '_'+ ans +'.png');
    }
};```

标签: javascriptjsxphotoshopphotoshop-script

解决方案


你可以这样尝试:

for (var i=1; i <= numImages; i++) {
    var str = "" + i;
    var pad = "000";
    var ans = pad.substring(0, pad.length - str.length) + str;
    layer.textItem.contents = ans;
    SavePNG(directory + imageName + '_'+ ans +'.png');
  };

您可以根据需要更改焊盘模板。其输出将是:

1 -> 001

97 -> 097

999 -> 999

1234 -> 1234


推荐阅读