2016-09-29 69 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

您是指在另一个文本框架内与其他页面元素或锚定文本框架分组的文本框架? –

相关问题