2012-11-09 38 views
0

我試圖將標籤應用於文檔中的所有EPS文件。 我的代碼:JS在indesign。自動標記錯誤

#target indesign 
var allItems=app.activeDocument.pageItems.everyItem().getElements().slice(0); 
for(var i=0;i<allItems.length;i++) 
    { 
     var allInnerItems = allItems[i].allPageItems; 
     for(var j=0;j<allInnerItems.length;i++) 
     { 
      (allInnerItems[j].toString() == "[object EPS]") ? 
       allInnerItems[j].parent.autoTag() : alert('false'); 
     } 
    } 

代碼查找所有EPS,適用於他們的Rectangle對象AutoTag方法。但我被給出錯誤:「對象或父母的故事已經被標記或不能被關閉」。除此之外,如果我選擇一些帶有EPS的矩形對象並在用戶界面中單擊「AutoTag」功能,它將起作用。 也許有人知道,我該怎麼辦?

在此先感謝!

回答

0

我認爲這應該適用於您正在嘗試做的事情。

在內部循環中,您忘記將i++更改爲j++。另外,您不必獲取要對其進行測試的對象的字符串值(即。.toString() == "[object EPS]"),您只需要求它的constructor即可。

最後,如果你不想爲那些已經標記元素的任何更多的錯誤,你可以添加一個條件,你if語句測試是否pageItem試圖autoTag()之前有一個associatedXMLElement

var allItems = app.activeDocument.pageItems.everyItem().getElements(); 
for(var i=0; i<allItems.length; i++) 
{ 
    var allInnerItems = allItems[i].allPageItems; 
    for(var j=0;j<allInnerItems.length; j++) 
    { 
     var item = allInnerItems[j]; 
     if (item.constructor == EPS && !item.parent.associatedXMLElement) { 
     item.parent.autoTag() 
     } else { 
     alert('false'); 
     } 
    } 
} 
+0

非常感謝!一切正常。 –