[FIXED] JavaScript Auto Increment -Code funktioniert nicht

Ausgabe

Ich muss 1000 Bilder mit jeweils unterschiedlichen Nummern generieren. Dazu wird online ein Skript gefunden, das gut funktioniert, aber es funktioniert nicht mit 00 vor den Inkrementen.

Ich kann nicht einfach 00 vor jede Zahl setzen, denn wenn es 10 erreicht, macht es 0010 statt 010, wie ich es will.

Das bedeutet, dass ich den Code etwas ändern muss. Und es ist wahrscheinlich WIRKLICH einfach, aber ich kann es einfach nicht herausfinden. Leider gibt es kein Protokoll, da ich das Skript in Photoshop ausführe.

Hier ist der Code, mit dem ich Probleme habe. Und darunter das Ergebnis:

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

Jede Hilfe wird sehr geschätzt! Ich muss nicht mit einem Löffel gefüttert werden! Ich muss aus meinen Fehlern lernen!

Bild des Skriptergebnisses, 10 wird nicht richtig generiert.  Sowie 1

Hier ist der gesamte Code im Skript (Hinzufügen vergessen, nachträglich bearbeitet)

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

Lösung

Du könntest es so versuchen:

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

Sie können die Pad-Vorlage nach Belieben ändern. Die Ausgabe davon wird sein:

1 -> 001

97 -> 097

999 -> 999

1234 -> 1234


Beantwortet von –
abellay


Antwort geprüft von –
David Goodson (FixError Volunteer)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like