2016-08-01 11 views
0

in den ersten Malen malt, nahm ich Textrahmen und färbte Text und Hintergrund. aber ich brauche Farbe nur erste Wörter, und in der zweiten Zeit kann ich nur ausgewähltes Wort nicht färben. Bitte hilf mir! Vielen Dank.in indesign Javascript. wie man etwas Text im Textframe auswählt und dieses

var textHeaderTf; 
       try{ 
       textHeaderTf = headerTf.paragraphs.item(0); 
       if(textHeaderTf!=undefined && textHeaderTf!=null) 
       { 
        headerTf.parentStory.insertionPoints.item(-1).contents = 'myNewText'; 
        // textHeaderTf.fillColor = myColorA; 
        textHeaderTf.strokeColor = myColorB; 

       } 
       }catch(e){log.write('setHeader font-color error7'+e);} 

       try{ 
       textHeaderTfWord = textHeaderTf.words[0];//headerTf.paragraphs.item(1); 
       if(textHeaderTfWord!=undefined && textHeaderTfWord!=null) 
       { 
        textHeaderTfWord.fillColor = myColorA; 
        textHeaderTfWord.strokeColor = myColorA; 

       } 
       }catch(e){log.write('setHeader font-color error8'+e);} 

Antwort

0

Es hängt davon ab, in welcher Reihenfolge Sie arbeiten möchten.

Bei Ihrem ersten Versuch fügen Sie am Anfang Text ein und dann legen Sie die Farbe für einen ganzen Absatz fest (Ihre textHeaderTf).
In Ihrem zweiten Versuch legen Sie nur die Farbe des ersten Wortes fest.

Wenn Sie Text am Anfang hinzufügen möchten und es sofort gefärbt haben, verwenden Sie diese:

textHeaderTf.insertionPoints.item(0).fillColor = myColorA; 
textHeaderTf.insertionPoints.item(0).contents = "Colored text!"; 

Das liegt daran, dass ein InsertionPoint verhält sich wie ein Textcursor: genau wie in der Schnittstelle Sie können selbst ein Attribut wie Farbe, Schriftart oder Textgröße "setzen" und dann sofort einen Text an der gleichen Stelle "eingeben".

Sie können dies an jedem InsertionPoint tun, nicht nur am Anfang eines Absatzes. Dasselbe gilt zum Beispiel für das Hinzufügen von Text vor dem 3. Wort.

for (i=0; i<5; i++) 
    textHeaderTf.words.item(i).fillColor = myColorA; 

Denken Sie daran, Sie sind immer noch Adressierung einzelner Worte, aber:

textHeaderTf.words.item(2).insertionPoints.item(0).fillColor = myColorA; 
textHeaderTf.words.item(2).insertionPoints.item(0).contents = "more colored text here "; 

Wenn Sie eine Reihe von bestehenden Wörter färben möchten, können Sie sie mit einer Schleife abzählen. Wenn Sie dies wiederholen mit

for (i=0; i<5; i++) 
    textHeaderTf.words.item(i).underline = true; 

sehen Sie, dass, ja, werden die Worte unterstrichen - aber vielleicht wollte man die Räume zwischen ihnen auch zu unterstreichen.

textHeaderTf.characters.itemByRange(textHeaderTf.words.item(1), 
    textHeaderTf.words.item(4)).underline = true; 

InDesign ist intelligent genug, um zwischen Indizierung zu übersetzen words:

so zu tun, können Sie durch Adressieren des Zeichenbereich zwischen dem ersten und den letzten Worten ein ganzes Stück Text in einem Rutsch Ziel und characters; Sie werden sehen, dass die Zwischenräume ebenfalls unterstrichen werden, da sie Teil des Bereichs Zeichen sind, auf den Sie sich beziehen.