2016-09-29 45 views
0

我有使用Javascript在其中運行的不重複的文檔。其中包含多個頁面。具有特定名稱的每個項目

有一些文本框名稱爲txtDate。

在所有頁面中,我想要使用javascript更改所有頁面。

與everyItem()=>它改變的所有文本框

與itemByName( 「txtDate」)=>它改變只有一個項目。

你有什麼建議任何改變的提示所有文本具有相同的標籤(txtDate)

感謝的建議。

+0

請先閱讀。 [我如何問一個問題?](http://stackoverflow.com/help/how-to-ask) –

回答

2

http://www.indiscripts.com/post/2013/05/indesign-scripting-forum-roundup-4#hd4sb1

然後

var items = app.activeDocument.allPageItems.whose (function (item) { 
 
\t return (item instanceof TextFrame) && item.label == "txtDate"; 
 
});

+0

應該是item.name而不是item.label,我想。另外,我會首先檢查名稱(即將其放在&&之前),因爲名爲「txtDate」的幀很可能是所有textFrame的子集,所以腳本必須檢查較少並且運行速度更快。 – mdomino

+0

item.label是引用文本框架腳本標籤的正確方法 –

+0

@mdomino allPageItems不是框架的集合,而是ALL頁面項目的集合。在&&子句中顛倒順序對最終結果絕對沒有影響。 –

0

我想,你會需要遍歷了名的文件textFrames測試是txtDate,發現匹配時,應用更改並繼續與循環。

#target indesign 
var myDoc = app.documents[0];  
var myFrames = myDoc.textFrames; 

for (var i=0; i< myFrames.length ; i++) { 
    if (myFrames[i].label == "txtDate"){    
     alert ("match"); // you changes here   
     } 
} 
+0

如果所有相關的textFrame都處於頂層,此方法纔有效。如果他們嵌套在一個組中,他們將找不到。因此,循環訪問'allPageItems'並另外檢查pageItems是否爲textFrame會爲您提供正確的結果。 – mdomino

+0

您是指在另一個文本框架內與其他頁面元素或錨定文本框架分組的文本框架? –

相關問題