2016-08-01 68 views
0

。 但我只需要顏色的第一個單詞,並在第二次,我不能僅顏色選定的單詞。請幫幫我!謝謝。in indesign javascript。如何選擇文本框中的一些文本,並在第一次爲文本框和顏色文本和背景添加顏色

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);} 

回答

0

這取決於你想要以什麼樣的順序工作。

在您的第一次嘗試中,您將在開始時插入文本,然後設置整個段落的顏色(您的textHeaderTf)。
在第二次嘗試中,您只設置第一個單詞的顏色。

如果你想在一開始有它的彩色文本添加馬上,使用此:

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

這是因爲InsertionPoint表現得像文本光標:就像在接口本身,您可以'設置'一個屬性,如顏色,字體或文本大小,然後立即在同一位置鍵入一些文本。

您可以在任何InsertionPoint上執行此操作,而不僅僅是在段落的開頭。例如,它在第三個單詞之前添加文本的工作方式相同。

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

如果你要的顏色了一些現有的話,你可以用一個循環計數不送:

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

記住你還是處理個人,雖然。若您重複使用

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

你會看到,是的,詞強調的 - 但也許你想強調它們之間的空間爲好。

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

InDesign中是足夠聰明的索引words之間進行轉換:

要做到這一點,你可以通過解決第一個和最後一個字之間的字符範圍針對整個文本塊一氣呵成和characters;您會看到兩者之間的空格也會被加下劃線,因爲它們是您引用的字符範圍內的一部分。