Skip to main content
mar627
Participant
November 21, 2017
Answered

Apply calculation to multiple forms with incrementing loop

  • November 21, 2017
  • 1 reply
  • 471 views

Hello,

What on earth am I missing here?

I don't think foo and baa and being outputted correctly with the appropriate backslashes (escaping?).

when executed I need the calculate command to be applied as:

"Calculate","AFSimple_Calculate(\"PRD\", new Array (\"hx\", \"rx\"))");

above the represents the incrementing number that starts at 1, it is stored in the variable [inc], seen below.

var targetArray = new Array("t1","t2","t3","t4","t5","t6","t7","t8");

for (i = 0; i < targetArray.length; i++){

var targetFields = this.getField(targetArray);

inc = i + 1;

var foo = "\"\h" + inc + "\"";

var baa = "\"\r" + inc + "\"";

targetFields.setAction("Calculate","AFSimple_Calculate(\"PRD\", new Array (foo, baa))");

};

Is it because foo and baa are not being pointed to their values from the 10th line?

Thanks Everyone!

M

This topic has been closed for replies.
Correct answer try67

Check the JS Console after changing the value of any field in the file.

You will probably see an error message that says something like "foo is undefined".

That is because these variables don't exist in the calculation script.

Change the last line in your code to:

targetFields.setAction("Calculate","AFSimple_Calculate(\"PRD\", new Array (\""+foo+"\", \""+baa+"\"))");

1 reply

try67
Community Expert
try67Community ExpertCorrect answer
Community Expert
November 21, 2017

Check the JS Console after changing the value of any field in the file.

You will probably see an error message that says something like "foo is undefined".

That is because these variables don't exist in the calculation script.

Change the last line in your code to:

targetFields.setAction("Calculate","AFSimple_Calculate(\"PRD\", new Array (\""+foo+"\", \""+baa+"\"))");

mar627
mar627Author
Participant
November 22, 2017

The colouration in syntax should've showed me that, right over my head. Thanks for your help try67, led me to the answer.

With that line changed the code still didn't function as intended, for anyone interested in achieving similar results here's code of the final custom action I created, thanks to try67.

var targetArray = new Array("t1", "t2", "t3", "t4", "t5", "t6", "t7", "t8");

for (i = 0; i < targetArray.length; i++) {

  var targetFields = this.getField(targetArray);

  inc = i + 1;

  var foo = "h" + inc;

  var baa = "r" + inc;

  app.alert(foo);

  targetFields.setAction("Calculate", "AFSimple_Calculate(\"PRD\", new Array (\""+foo+"\", \""+baa+"\"))");

};

M