This topic is locked

Add page - Javascript onload event

1/21/2019 1:08:04 AM
PHPRunner General questions
mtpocket author

Hi,
I'm using Runner 9.8. I have an add page with about 50 calculations to be determined / calculated. I'm using add page, Javascript OnLoad Event to get these values. I'm looking at as per example "Calculate total value on the fly".
When doing as per the example everything works but as I carry along at about half way the beginning or start of formulae doesn't work.
This is an example of code.

var f5AM = Runner.getControl(pageid, 'AM_NumGoal');

var f5CM = Runner.getControl(pageid, 'CM_NumGoal');

var f5IM = Runner.getControl(pageid, 'IM_NumGoal');

var f5WM = Runner.getControl(pageid, 'WM_NumGoal');

var f5AF = Runner.getControl(pageid, 'AF_NumGoal');

var f5CF = Runner.getControl(pageid, 'CF_NumGoal');

var f5IF = Runner.getControl(pageid, 'IF_NumGoal');

var f5WF = Runner.getControl(pageid, 'WF_NumGoal');

var f5FM = Runner.getControl(pageid, 'FM_NumGoal');

var f5FF = Runner.getControl(pageid, 'FF_NumGoal');

var f5Total = Runner.getControl(pageid, 'Tot_NumGoal');

" for the next 50 lines";
function func() {

f5Total.setValue(Number(f5AM.getValue()) + Number(f5CM.getValue()) + Number(f5IM.getValue()) + Number(f5WM.getValue()) +

Number(f5AF.getValue()) + Number(f5CF.getValue()) + Number(f5IF.getValue()) + Number(f5WF.getValue()) +

Number(f5FM.getValue()) + Number(f5FF.getValue()));
fyREPTotal.setValue((Number(fyrepAM.getValue())+ Number(fyrepCM.getValue())+ Number(fyrepIM.getValue())+ Number(fyrepWM.getValue())+

Number(fyrepAF.getValue())+ Number(fyrepCF.getValue())+ Number(fyrepIF.getValue())+ Number(fyrepWF.getValue())+

Number(fyrepFM.getValue())+ Number(fyrepFF.getValue())).toFixed(0));
fyrepAM.setValue((Number(f5AM.getValue()) / Number(f5Total.getValue())).toFixed(2));

fyrepCM.setValue((Number(f5CM.getValue()) / Number(f5Total.getValue())).toFixed(2));

fyrepIM.setValue((Number(f5IM.getValue()) / Number(f5Total.getValue())).toFixed(2));

fyrepWM.setValue((Number(f5WM.getValue()) / Number(f5Total.getValue())).toFixed(2));

fyrepAF.setValue((Number(f5AF.getValue()) / Number(f5Total.getValue())).toFixed(2));

fyrepCF.setValue((Number(f5CF.getValue()) / Number(f5Total.getValue())).toFixed(2));

fyrepIF.setValue((Number(f5IF.getValue()) / Number(f5Total.getValue())).toFixed(2));

fyrepWF.setValue((Number(f5WF.getValue()) / Number(f5Total.getValue())).toFixed(2));

fyrepFM.setValue((Number(f5FM.getValue()) / Number(f5Total.getValue())).toFixed(2));

fyrepFF.setValue((Number(f5FF.getValue()) / Number(f5Total.getValue())).toFixed(2));
"Calculation above"
};
f5AM.on('keyup', func);

f5CM.on('keyup', func);

f5IM.on('keyup', func);

f5WM.on('keyup', func);

f5AF.on('keyup', func);

f5CF.on('keyup', func);

f5IF.on('keyup', func);

f5WF.on('keyup', func);

f5FM.on('keyup', func);

f5FF.on('keyup', func);

"Fields where numbers can be entered"
The above need to happen 5 times.

How can I write the above formula? Or how do I separate the other 5 formula?
Thanks

M
Mark Kramer 1/21/2019



Hi,
I'm using Runner 9.8. I have an add page with about 50 calculations to be determined / calculated. I'm using add page, Javascript OnLoad Event to get these values. I'm looking at as per example "Calculate total value on the fly".
When doing as per the example everything works but as I carry along at about half way the beginning or start of formulae doesn't work.
This is an example of code.

var f5AM = Runner.getControl(pageid, 'AM_NumGoal');

var f5CM = Runner.getControl(pageid, 'CM_NumGoal');

var f5IM = Runner.getControl(pageid, 'IM_NumGoal');

var f5WM = Runner.getControl(pageid, 'WM_NumGoal');

var f5AF = Runner.getControl(pageid, 'AF_NumGoal');

var f5CF = Runner.getControl(pageid, 'CF_NumGoal');

var f5IF = Runner.getControl(pageid, 'IF_NumGoal');

var f5WF = Runner.getControl(pageid, 'WF_NumGoal');

var f5FM = Runner.getControl(pageid, 'FM_NumGoal');

var f5FF = Runner.getControl(pageid, 'FF_NumGoal');

var f5Total = Runner.getControl(pageid, 'Tot_NumGoal');

" for the next 50 lines";
function func() {

f5Total.setValue(Number(f5AM.getValue()) + Number(f5CM.getValue()) + Number(f5IM.getValue()) + Number(f5WM.getValue()) +

Number(f5AF.getValue()) + Number(f5CF.getValue()) + Number(f5IF.getValue()) + Number(f5WF.getValue()) +

Number(f5FM.getValue()) + Number(f5FF.getValue()));
fyREPTotal.setValue((Number(fyrepAM.getValue())+ Number(fyrepCM.getValue())+ Number(fyrepIM.getValue())+ Number(fyrepWM.getValue())+

Number(fyrepAF.getValue())+ Number(fyrepCF.getValue())+ Number(fyrepIF.getValue())+ Number(fyrepWF.getValue())+

Number(fyrepFM.getValue())+ Number(fyrepFF.getValue())).toFixed(0));
fyrepAM.setValue((Number(f5AM.getValue()) / Number(f5Total.getValue())).toFixed(2));

fyrepCM.setValue((Number(f5CM.getValue()) / Number(f5Total.getValue())).toFixed(2));

fyrepIM.setValue((Number(f5IM.getValue()) / Number(f5Total.getValue())).toFixed(2));

fyrepWM.setValue((Number(f5WM.getValue()) / Number(f5Total.getValue())).toFixed(2));

fyrepAF.setValue((Number(f5AF.getValue()) / Number(f5Total.getValue())).toFixed(2));

fyrepCF.setValue((Number(f5CF.getValue()) / Number(f5Total.getValue())).toFixed(2));

fyrepIF.setValue((Number(f5IF.getValue()) / Number(f5Total.getValue())).toFixed(2));

fyrepWF.setValue((Number(f5WF.getValue()) / Number(f5Total.getValue())).toFixed(2));

fyrepFM.setValue((Number(f5FM.getValue()) / Number(f5Total.getValue())).toFixed(2));

fyrepFF.setValue((Number(f5FF.getValue()) / Number(f5Total.getValue())).toFixed(2));
"Calculation above"
};
f5AM.on('keyup', func);

f5CM.on('keyup', func);

f5IM.on('keyup', func);

f5WM.on('keyup', func);

f5AF.on('keyup', func);

f5CF.on('keyup', func);

f5IF.on('keyup', func);

f5WF.on('keyup', func);

f5FM.on('keyup', func);

f5FF.on('keyup', func);

"Fields where numbers can be entered"
The above need to happen 5 times.

How can I write the above formula? Or how do I separate the other 5 formula?
Thanks


You need to use a "for" loop to execute the code 5 times. The code to be executed 5 times goes inside of the loop.
See here for example https://www.geeksforgeeks.org/loops-in-javascript/