簡體   English   中英

使用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文本引用。 您需要在循環中使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM