• Global community
    • Language:
      • Deutsch
      • English
      • Español
      • Français
      • Português
  • 日本語コミュニティ
    Dedicated community for Japanese speakers
  • 한국 커뮤니티
    Dedicated community for Korean speakers

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

Community Beginner ,
Nov 18, 2020 Nov 18, 2020

Copy link to clipboard

Copied

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

TOPICS
Acrobat SDK and JavaScript

Views

340

Likes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines

correct answers 1 Correct answer

Community Expert , Nov 18, 2020 Nov 18, 2020

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;
  
...

Likes

Translate

Translate
Community Expert ,
Nov 18, 2020 Nov 18, 2020

Copy link to clipboard

Copied

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;

Likes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Nov 18, 2020 Nov 18, 2020

Copy link to clipboard

Copied

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 PDFScripting
Use the Acrobat JavaScript Reference early and often

Likes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Beginner ,
Nov 18, 2020 Nov 18, 2020

Copy link to clipboard

Copied

Works perfectly! Thank you for your help and wisdom!

Likes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Nov 18, 2020 Nov 18, 2020

Copy link to clipboard

Copied

LATEST

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

 

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

Likes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines