2016-09-29 2 views
0

나는 자바 스크립트로 실행되는 indesign 문서를 가지고 있습니다. 여러 페이지가 들어 있습니다.특정 이름을 가진 모든 항목

이름이 txtDate 인 텍스트 프레임이 있습니다.

모든 페이지에서 자바 스크립트로 모두 변경하고 싶습니다.

everyItem와

() =>를 그것의 모든 텍스트 itemByName ("txtDate로") => 단지 하나의 아이템을 변경

프레임 바꾼다.

당신의 제안은 변화에 대한 팁 같은 라벨 (txtDate로) 제안

덕분에 모든 텍스트 것입니다.

+0

먼저 읽어보십시오. [질문은 어떻게하나요?] (0120) 대답 –

답변

2
+0

item.label 대신 item.name을 사용해야합니다. 또한 "txtDate"라는 이름의 프레임이 모든 textFrames의 하위 집합 일 가능성이 높으므로 먼저 이름을 확인합니다 (즉, && 앞에 입력해야합니다). 따라서 스크립트는 더 적은 수를 확인하고 더 빠르게 실행해야합니다. – mdomino

+0

item.label은 텍스트 프레임 스크립트 레이블 –

+0

@mdomino를 참조하는 올바른 방법입니다. allPageItems는 프레임 모음이 아니라 모든 페이지 항목 모음입니다. && 절의 순서를 반대로하면 최종 결과에는 아무런 영향을 미치지 않습니다. –

0

var items = app.activeDocument.allPageItems.whose (function (item) { 
 
\t return (item instanceof TextFrame) && item.label == "txtDate"; 
 
});
난 당신이 일치하는 항목을 발견했을 때, 변경 사항을 적용하고 계속 txtDate로되는 이름의 문서 textFrames의 테스트를 통해 루프를해야합니다 생각 루프.

#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

이 방법은 모든 관련 textFrames가 최상위 수준에있는 경우에만 작동합니다. 그룹에 중첩되어 있으면 발견되지 않습니다. 그래서 대신'allPageItems'을 반복하고 pageItems가 textFrame인지 여부를 확인하면 올바른 결과를 얻을 수 있습니다. – mdomino

+0

다른 페이지 요소 또는 고정 된 텍스트 프레임과 다른 텍스트 프레임으로 그룹화 된 텍스트 프레임을 의미합니까? –

관련 문제