Expand my Community achievements bar.

Dive into Adobe Summit 2024! Explore curated list of AEM sessions & labs, register, connect with experts, ask questions, engage, and share insights. Don't miss the excitement.

Javascript For loop not working within a function

Avatar

Level 2

Hi all,

I'm a beginner to LiveCycle and I cant seem to get a loop working within a function.  The function is being called successfully because when I manually create the code it works but I am trying to clean things up.

So here is my working example:

function hideContent() {

        MainFlowedSub.LevelsSub.Table1.presence = "hidden";

        MainFlowedSub.LevelsSub.Table2.presence = "hidden";

       ... and so on....


         MainFlowedSub.LevelsSub.Table8.Row1.presence = "hidden";

        MainFlowedSub.LevelsSub.Table8.Row2.presence = "hidden";

       ... and so on....

}

However when I try and creat a loop instead of listing every sing table/row nothing happens. this is important to my project as there will be alot of different rows depending on radio button selections earlier in the form.  Below is the current state of my code:

function hideContent() {

    var i=0;
     for (i=1;i<=5;i++)
     {
         MainFlowedSub.LevelsSub.Table[i].presence = "hidden";
     }

    var j=0;
     for (j=1;j<=23;j++)
     {
         MainFlowedSub.LevelsSub.Table8.Row[j].presence = "hidden";
     }

    var k=0;
     for (k=24;k<=88;k++)
     {
         MainFlowedSub.LevelsSub.Table8.Row[k].presence = "hidden";
     }

;

this will then continue as there will be hundreds of rows.

Any help will be greatly appreciated and I am sure I am making a basic error  so thanks in advance.

j

8 Replies

Avatar

Former Community Member

You cannot use square brackets in javascript as it thinks you are referring to an array. So you have to use a different notation

xfa.resolveNode("string that references the object")

So in your case the reference woudl be:

xfa.resolveNode("MainFlowedSub.LevelsSub.Table[" + i + "]").presence = "hidden"

Also note that each reference within the for loop will be an i not a j or k etc .....each time you run through the loop the value of i increases by 1 and the reference will be correct for your object.

Make sense?

paul

Avatar

Level 2

thanks for your help paul.  Again, really appreciated as I know very little about all this.

Unfortunately its still not working... One thing I am sure of is that I am doing something very basic wrong. So here is my code, I have applied your suggestion above which will cover all my data:

To give an understanding, I have 5 tables of content, each has i amount of rows. and I am running this script to clear/remove all items being displayed.

function hideContent() {

    for (var i=1;i<=5;i++)
    {
        xfa.resolveNode("MainFlowedSub.LevelsSub.Table[" + i + "]").presence = "hidden";
    }


    for (var i=1;i<=71;i++)
    {
        xfa.resolveNode("MainFlowedSub.LevelsSub.Table8.Row[" + i + "]").presence = "hidden";
    }

    for (var i=1;i<=93;i++)
    {
        xfa.resolveNode("MainFlowedSub.LevelsSub.Table9.Row[" + i + "]").presence = "hidden";
    }

    for (var i=1;i<=99;i++)
    {
        xfa.resolveNode("MainFlowedSub.LevelsSub.Table10.Row[" + i + "]").presence = "hidden";
    }


    for (var i=1;i<=101;i++)
    {
        xfa.resolveNode("MainFlowedSub.LevelsSub.Table11.Row[" + i + "]").presence = "hidden";
    }

    for (var i=1;i<=87;i++)
    {
        xfa.resolveNode("MainFlowedSub.LevelsSub.Table12.Row[" + i + "]").presence = "hidden";
    }

}

It has to be something to do with my For loops because if I manually insert each line it works perfectly.

Thanks again,

johnny

Avatar

Former Community Member

Send me the form and I will have a look (LiveCycle8@gmail.com) include a description of the issue in the email.

Paul

Avatar

Level 2

Thanks Paul,

I have send you an email, hopefully I have explained myself.

Again, thanks for your time!

johnny

Avatar

Level 2

Sorry I am unsure what happened there. I have resent the email to LiveCycle8@gmail.com

thanks,

j

Avatar

Former Community Member

Still nothing ......is the gmail site being filtered on your end?

Paul

Avatar

Level 2

Hi Paul,

Apologies about the delays in communication.  Email issue was a problem on my end beyond my control.

Thank you for your support, it has been most appreciated and my issue is now resolved. For anyone else reading, I have posted an example of the resolved code.

function show_number_algebra() {       
    var i=0;
    for (i=1;i<=27;i++)
    {
        xfa.resolveNode("MainFlowedSub.LevelsSub.Table8.Row" + i).presence = "visible";
    }   
}

function show_number_algebra() {       
     var i=0;
     for (i=28;i<=64;i++)
     {
         xfa.resolveNode("MainFlowedSub.LevelsSub.Table8.Row" + i).presence = "visible";
     }   
}

etc. etc.