Skip to main content
Participating Frequently
September 10, 2020
Answered

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

  • September 10, 2020
  • 3 replies
  • 1014 views

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.

This topic has been closed for replies.
Correct answer try67

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)

3 replies

Participating Frequently
September 10, 2020

Thank you SO much! That work's perfectly!

try67
Community Expert
try67Community ExpertCorrect answer
Community Expert
September 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)

Bernd Alheit
Community Expert
Community Expert
September 10, 2020

Is "==true" necessary?

try67
Community Expert
Community Expert
September 10, 2020

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

Bernd Alheit
Community Expert
Community Expert
September 10, 2020

Following is not possible:

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

 FindOCG accepts only one name.

Participating Frequently
September 10, 2020

Thank you, that is very good to know!