Javascript 自动递增代码不起作用

Javascript Auto Increment Code not working

我需要生成 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');
  };

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

这是脚本中的全部代码(忘记添加了,后来编辑了)

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');
    }
};```

您可以将数字添加到一串零中,然后根据所需长度对结果字符串进行切片:

var template = "0000";
var num = 0;
var targetNumber = 1000;


for(let i = 0; i <= targetNumber; i++) {
    // add i to the template. Javascript will automatically to this type-coerceon since we're adding string + number
  let numStr = template + i;
  // strip leading zeroes to match the template length
  numStr = numStr.slice(numStr.length - template.length);
  console.log(numStr);
}

你可以这样试试:

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

如果您只是想根据循环索引操作变量,那么下面的内容就足够了。

for (var i = 1; i <= 1000; i++) {

    // Result will be '00' | '0' | ''
    const result = i < 10 ? '00' : i < 100 ? '0' : '';

    // The result is prepended to the current index
    // Aka (001, 010, 100) 
    const contents = result + i;

    // Set the text item object contents to value of contents 
    layer.textItem.contents = contents;

    // Saves the Image
    SavePNG(directory + imageName + '_' + contents + '.png');
}

这个

i < 10 ? '00' : i < 100 ? '0' : ''

顺便说一下,它是一个三元运算符,它本质上是一个 shorthand if 语句。