如何在if语句中使用无效对象?

发布于 2025-01-24 13:42:33 字数 2892 浏览 4 评论 0原文

我目前正在制作Indesign证书的自动化脚本。 我正在按照年度和certnumber对页面进行排序。 我正在使用绝对的帖子(我没有设法找到一种更简单的方法,但我确定有一个)。 我的问题是,我有每个模板的2个变体,这些变体具有不同的术语的绝对psotions,我用作排序的键,因此我写了一个“有些swap-funtion”,但请继续遇到错误,因为如果接下来是下一个错误页面有一个不同的模板,我正在使用一个无效的对象。我该如何解决这个问题?我尝试了ISVALID功能,但是确实没有太多的文档在线,因此我可能使用了错误。先感谢您!!

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.poge.pages.pages [0] .TextFrames [frm] .texts [0 ] .words [wrd] .contents.length!= 4)是失败的线,不介意案例的双重分配,我还没有完成计算位置

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文