![](/img/trans.png)
[英]How to store $2 value to variable in InDesign GREP find / change using javascript
[英]Change text using a variable in InDesign javascript
我正在嘗試在活動頁面上找到所有“#”並將其更改為數字,即。 1,2,3。 。 。
下面的代碼是我認為可以的,但是沒有用。 相反,它將每個“#”更改為“ 0”。
app.findTextPreferences = app.changeTextPreferences = NothingEnum.NOTHING;
app.findTextPreferences.findWhat = "#";
var finds = app.activeDocument.findText();
if (finds.length > 0) {
for (var i = 0; i < finds.length; i++)
{
app.changeTextPreferences.changeTo = "no: " + i;
app.activeDocument.changeText();
}
else
{
alert("Nothing has been found");
}
}
正如ali haydar所說,changeText將在全球范圍內應用,並將破壞以前的findText文本引用。 您需要在循環中使用contents屬性。
app.findTextPreferences = app.changeTextPreferences = NothingEnum.NOTHING;
app.findTextPreferences.findWhat = "#";
var finds = app.activeDocument.findText();
if (finds.length > 0)
{
for (var i = 0; i < finds.length; i++)
{
finds[i].contents = "no: " + String(i);
}
}
else
{
alert("Nothing has been found");
}
實際上,您甚至可以擺脫if條件:
app.findTextPreferences = app.changeTextPreferences = null;
app.findTextPreferences.findWhat = "#";
var finds = app.activeDocument.findText();
var n = finds.length;
var nStart = n;
while (n-- ) finds[n].contents = "no: " + String(n+1);
alert(nStart? nStart+" replacements made…" : "Nothing has been found");
僅考慮第1頁...
var main = function(){
var doc = app.properties.activeDocument,
finds,n;
app.findTextPreferences = app.changeTextPreferences = null;
app.findTextPreferences.findWhat = "#";
if ( !doc ) return;
finds = doc.findText();
n = finds.length;
while (n-- ) {
finds[n].parentTextFrames.length
&& finds[n].parentTextFrames[0].isValid
&& finds[n].parentTextFrames[0].parentPage.id==doc.pages[0].id
&& finds[n].contents = "no: " + String(n+1);
}
};
main();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.