'How can I use an invalid object in an if statement?

I am currently working on an automatisation script for Indesign certificats. I am sorting the pages according to the Year and the certNumber. I am using absolute postions (I did not manage to find an easier Way, but I am sure there is one). My problem is, that I have 2 variants of each template, that have different absolute psotions of the terms that I use as Keys for sorting, therefor I wrote a "somewhat-swap-funtion", but keep getting errors, because if the next Page, has a different template, i am using an object, which is invalid. How can I work around this problem? I tried the isValid function, but there really isnt that much of documentation online, so I might have used it wrong. Thank you in advance!!

var sortPosArr = [[5,6,4,6],[9,8,6,8],[6,6,5,6],[4,6,4,6],[2,5],[3,7],[4,5],[2,5],[3,5],[6,7],[6,5,6,5],[7,5,7,5],[6,6,6,6],[5,6,5,6],[7,6,7,6],[7,6,7,6]];
var sCN; //sortCaseNumber
var numberOfPages = document.pages.length;
if (auswahlMz != "VERs" && auswahlMz != "HKN NEU100 mit CO2-Einsparung") { //Checkt ob das Format eine Zertifikatnummer hat
  var frm, nxtfrm, wrd, nxtwrd, cntr = 1, pcntr = 1;//Frame, Word, Counter & Pagecounter
  switch (auswahlMz) { //absolute Position des Jahres in der Zertifikatnummer
    case "HKN NEU100": sCN = 0; break;
    case "HKN NEU100_engl": sCN = 1; break;
    case "HKN NEU100 mit CO2-Einsparung": sCN = 2; break;
    case "HKN NEU100_wind": sCN = 3; frm = 4, wrd = 6; break;
    case "RenewablePLUS": sCN = 4; frm = 2, wrd = 5; break;
    case "RenewablePLUS eng.": sCN = 5; frm = 3, wrd = 7; break;
    case "RenewablePLUS mit CO2-Einsparung": sCN = 6; frm = 4, wrd = 5; break;
    case "ÖkoPLUS": sCN = 7; frm = 2, wrd = 5; break;
    case "ÖkoPLUS_mit_Einsparung": sCN = 8; frm = 3, wrd = 5; break;
    case "ÖkoPLUS_mit_Einsparung_Engl": sCN = 9; frm = 6, wrd = 7; break;
    case "RenewablePLUS REGIO_bäumt auf": sCN = 10; break;
    case "RenewablePLUS REGIO_blüht auf": sCN = 11; break;
    case "ÖkoPLUS REGIO_bäumt auf": sCN = 12; break;
    case "ÖkoPLUS REGIO_blüht auf": sCN = 13; break;
    case "HKN NEU100 REGIO_bäumt auf": sCN = 14; break;
    case "HKN NEU100 REGIO_blüht auf": sCN = 15; break;
    default: alert("Fehler");
  }
  if(auswahlAlt.value){frm = sortPosArr[sCN][0], wrd = sortPosArr[sCN][1];}
  else if(auswahlNeu.value){frm = sortPosArr[sCN][2], wrd = sortPosArr[sCN][3];}
  alert(sCN+" "+frm+" "+wrd);

  if (document.pages[0].textFrames[frm].texts[0].words[wrd].contents === undefined || document.pages[0].textFrames[frm].texts[0].words[wrd].contents.length != 4) {
    if (auswahlNeu.value) {
      frm = sortPosArr[sCN][2];
      wrd = sortPosArr[sCN][3];
    }
    else{
      frm = sortPosArr[sCN][0];
      wrd = sortPosArr[sCN][1];
    }
  }//Design von Page 0 wird überprüft und die Positionen angepasst
  if (document.pages[0].textFrames[frm].texts[0].words[wrd].contents > stromMenge_jahrPnl.jahr.text) {
    document.pages[numberOfPages - 1].move(LocationOptions.BEFORE, document.pages[0]);
    pcntr = 0;
    cntr = 1;
  }//Jahr < erstes Jahr in Datei

Btw if (document.pages[0].textFrames[frm].texts[0].words[wrd].contents === undefined || document.pages[0].textFrames[frm].texts[0].words[wrd].contents.length != 4) is the line of failure and dont mind the double assignments on the cases, I wasnt done yet computing the positions



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source