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

Show a button based on which layers are visible (javascript)

Community Beginner ,
Sep 10, 2020 Sep 10, 2020

Copy link to clipboard

Copied

So I've got a "Game" I've made in Acrobat where the user clicks on certain buttons and a layer appears. I wanted to do a final "congratulations" thing at the end when they click on the finish button.

 

Basically If "Layer 20" and "Layer 11" (and some others that I haven't done yet) are visible and the rest are not then I want the button "Complete" to appear.

 

Otherwise I'd like it to reset the visibility of the layers to the default state.

 

This is as far as I've got:

function FindOCG(cName) { 
    var aOCGs = this.getOCGs(); 
    for(var i=0; aOCGs && i<aOCGs.length;i++) { 
        if(aOCGs[i].name == cName) return aOCGs[i]; 
    } 
    return null; 
}
if(FindOCG("Layer 20"&&"Layer 11").state=true) 
{
this.getField("Complete").display=display.visible;
}
Else
{
this.getField("Complete").display=display.hidden;
}

If 20 and 11 are visible it appears okay, but if they're not visible and I click the Finish button then those layers appear and so does the finish button.

 

Please can anyone help, I'm so stuck now.

TOPICS
Acrobat SDK and JavaScript

Views

471

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 , Sep 10, 2020 Sep 10, 2020

In addition to Bernd's correct comment, the comparison opeator in JS is either "==" or "===". So change this line:

if (FindOCG("Layer 20"&&"Layer 11").state=true)

to:

if (FindOCG("Layer 20").state==true && FindOCG("Layer 11").state==true)

Votes

Translate

Translate
Community Expert ,
Sep 10, 2020 Sep 10, 2020

Copy link to clipboard

Copied

Following is not possible:

FindOCG("Layer 20"&&"Layer 11")

 FindOCG accepts only one name.

Votes

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 ,
Sep 10, 2020 Sep 10, 2020

Copy link to clipboard

Copied

Thank you, that is very good to know!

Votes

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 ,
Sep 10, 2020 Sep 10, 2020

Copy link to clipboard

Copied

In addition to Bernd's correct comment, the comparison opeator in JS is either "==" or "===". So change this line:

if (FindOCG("Layer 20"&&"Layer 11").state=true)

to:

if (FindOCG("Layer 20").state==true && FindOCG("Layer 11").state==true)

Votes

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 ,
Sep 10, 2020 Sep 10, 2020

Copy link to clipboard

Copied

Is "==true" necessary?

Votes

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 ,
Sep 10, 2020 Sep 10, 2020

Copy link to clipboard

Copied

LATEST

No, it's not. I just left it because it was in the original code.

Votes

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 ,
Sep 10, 2020 Sep 10, 2020

Copy link to clipboard

Copied

Thank you SO much! That work's perfectly!

Votes

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