Skip navigation
Currently Being Moderated


Apr 30, 2012 7:59 AM

Tags: #javascript #cd5.5 #parentpage

If allTextFrames is a collection of text frames from a layer, why does the line below give me a null error?


currentPage= allTextFrames[i].parentPage;




I’m currently working around it by doing this line below so I can export PDFs via page range with the value in currentPage.


currentPage= allTextFrames[i].parent.index+1;

  • John Hawkinson
    5,572 posts
    Jun 25, 2009
    Currently Being Moderated
    Apr 30, 2012 8:28 AM   in reply to pkrk

    Can you please show us how you construct allTextFrames?

    I can run this without error:


    >> t=app.activeDocument.textFrames.everyItem().getElements();

    [object TextFrame]


    >> t[0].parentPage

    [object Page]



    What is "a null error"?

    Mark as:
  • John Hawkinson
    5,572 posts
    Jun 25, 2009
    Currently Being Moderated
    Apr 30, 2012 9:01 AM   in reply to pkrk

    I assume you mean .parentPage in the assignment line of your script.

    In which case the alert shows me "[Page]" which is as it should be.

    What version of InDesign?


    Also, this construction:

    var allTextFrames = new Array(); 
    allTextFrames = myLayer.textFrames;


    is both superfluous and unwise. You declare allTextFrames, initially assign it the value of the Array constructor, as if it were an array, and then you assign it to a collection.

    A collection is not an array. So now you use the same variable to represent two different types. This is acceptable in JavaScript, but bad style, because it promotes confusion about what type things are.


    In this case, simply


    var allTextFrames = myLayer.textFrames;


    would be sufficient.

    What's the minimal document necessary to make your script fail?

    Also, it would be nice to see an example that stands on its own.

    This one depends on myLayer, so it's annoying for others to test.

    Mark as:
  • John Hawkinson
    5,572 posts
    Jun 25, 2009
    Currently Being Moderated
    Apr 30, 2012 11:58 AM   in reply to pkrk

    It works fine for me in CS5.5, on a Mac.

    I think we'll need more details about your document and its layer construction.

    What happens if you create a new document with a single textframe?

    Mark as:
  • Currently Being Moderated
    Apr 30, 2012 12:30 PM   in reply to pkrk

    A TextFrame is always located on a Spread but not necessarily on a Page. That's why tf.parentPage may be NULL.


    To see what exactly happens use the following test:


    alert( myLayer.textFrames.everyItem().parentPage.toSource() );




    Mark as:

More Like This

  • Retrieving data ...

Bookmarked By (0)

Answers + Points = Status

  • 10 points awarded for Correct Answers
  • 5 points awarded for Helpful Answers
  • 10,000+ points
  • 1,001-10,000 points
  • 501-1,000 points
  • 5-500 points