Skip to main content
Participating Frequently
Nov 18, 2020 8:24 PM UTC
Answered

Trying to change text color and fill color simutaneously - Help Please!

Hello Friends,

 

I am trying to write a script that will change a fill color based on a calculated field's event value, but I am having trouble getting the effected field to change both colors. This is the script I currently have that will not work;

 

if (Number(event.value)>1)
app.alert("Total Beneficiary Allocation exceeds 100%");
if(event.value == 0)
event.target.fillColor = color.white;
else if(event.value < 1)
event.target.fillColor = color.yellow;
else if(event.value > 1)
event.target.fillColor = color.red && event.target.textColor = color.white;
else
event.target.fillColor = color.green;

 

The script works perfectly fine when I remove "&& event.target.textColor = color.white", but gives me "invalid assignment" when entered. All help would be greatly appreciated!

 

Thank you,

Eric

This topic is closed to new replies. Start a new post to keep the conversation going.
Thom Parker
Thom ParkerCorrect answer
Community Expert
Nov 18, 2020 8:34 PM UTC

Its a matter of using the correct "if" block syntax.

 

if(event.value == 0)
{
    event.target.fillColor = color.white;
    event.target.textColor = color.black;
}
else if(event.value < 1)
{
    event.target.fillColor = color.yellow;
    event.target.textColor = color.black;
}
else if(event.value > 1)
{
    app.alert("Total Beneficiary Allocation exceeds 100%");
    event.target.fillColor = color.red;
    event.target.textColor = color.white;
}
else
{
    event.target.fillColor = color.green;
    event.target.textColor = color.black;
}

 

 

Notice how the code for each if statement is enclosed in curly brackets. And both colors are set in every block. 

You can read more about using "if" statements here:

https://acrobatusers.com/tutorials/conditional-execution/

 

Thom Parker - Software Developer at PDFScriptingUse the Acrobat JavaScript Reference early and often

4 replies

Thom Parker
Community Expert
Thom ParkerCommunity ExpertCorrect answer
Community Expert
Nov 18, 2020 8:34 PM UTC

Its a matter of using the correct "if" block syntax.

 

if(event.value == 0)
{
    event.target.fillColor = color.white;
    event.target.textColor = color.black;
}
else if(event.value < 1)
{
    event.target.fillColor = color.yellow;
    event.target.textColor = color.black;
}
else if(event.value > 1)
{
    app.alert("Total Beneficiary Allocation exceeds 100%");
    event.target.fillColor = color.red;
    event.target.textColor = color.white;
}
else
{
    event.target.fillColor = color.green;
    event.target.textColor = color.black;
}

 

 

Notice how the code for each if statement is enclosed in curly brackets. And both colors are set in every block. 

You can read more about using "if" statements here:

https://acrobatusers.com/tutorials/conditional-execution/

 

Translate
Thom Parker - Software Developer at PDFScriptingUse the Acrobat JavaScript Reference early and often
Eric5C58Author
Participating Frequently
Nov 18, 2020 8:41 PM UTC

Works perfectly! Thank you for your help and wisdom!

Translate
Thom Parker
Community Expert
Community Expert
Nov 18, 2020 9:33 PM UTC

BTW:

Your original code will work with a small adjustment. The reported error is caused by an order of execution issue, i.e. an operator precedence issue. 

The "&&" on the left side evaluates before the "=", so the assignment is to a static value, not the "textColor" property. 

 

But this code change will work because the parenthese force the order of execution.

(event.target.fillColor = color.red) && (event.target.textColor = color.white);

 

Translate
Thom Parker - Software Developer at PDFScriptingUse the Acrobat JavaScript Reference early and often
Nesa Nurani
Community Expert
Community Expert
Nov 18, 2020 8:32 PM UTC

Try like this:

if (Number(event.value)>1)
app.alert("Total Beneficiary Allocation exceeds 100%");
if(event.value == 0){
event.target.fillColor = color.white;}
else if(event.value < 1){
event.target.fillColor = color.yellow;}
else if(event.value > 1){
event.target.fillColor = color.red;
event.target.textColor = color.white;}
else
event.target.fillColor = color.green;

Translate