在 InDesign 中使用变量更改文本 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 文本引用。您需要的是在循环中使用内容 属性。
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();
我试图找到活动页面上的所有“#”并将它们更改为数字,即。 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 文本引用。您需要的是在循环中使用内容 属性。
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();