如何在if语句中使用无效对象?
我目前正在制作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 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论