- Сообщения
- 251
- Реакции
- 4
Не могу разобраться, почему объявленная функция в одном случае работает, а в другом - нет. Помогите пожалуйста. Беру текст, включающий в себя разные и несколько повторяющихся слов. Создаю из них массив (словарь), в котором слова не должны повторяться. В процессе создания словаря, объявленная в начале скрипта функция, проверяющая наличие элемента в массиве, исправно работает. Далее этот же самый текст исследую с помощью этой же функции, но она уже не работает и ВСЕ слова объявляет отсутствующими в словаре, который только что из них был создан. Где ошибка?
Код:
//Объявляем функцию, проверяющую наличие элемента в массиве:
Array.prototype.isElement = function (item) {
for (var i = 0; i < this.length; i++) {
if (this[i] == item) {
return true;
};
};
return false;
}
myDoc = app.activeDocument;
var arr =[]; // массив, в который собираем словарь
myAbsentColorSample = [100, 0, 100, 0]; // цвет для отсутствующих в словаре слов
try{
myColor = myDoc.colors.item("myAbsentColor");
myName = myColor.name;
}
catch (myError) {
myColor = myDoc.colors.add ({name:"myAbsentColor", model:ColorModel.process, space:ColorSpace.CMYK, colorValue:myAbsentColorSample});
}
// Создаем словарь из тестового текста, включающего повторяющиеся слова:
app.changeGrepPreferences = app.findGrepPreferences = NothingEnum.nothing;
app.findGrepPreferences.findWhat = "\\<[\\l\\u]+\\>";
myFoundItems = myDoc.findGrep();
if(myFoundItems.length != 0)
{
for (var i=0; i<myFoundItems.length; i++)
{
myFoundItem = myFoundItems[i];
myWord1 = myFoundItem.contents
if (arr.isElement(myWord1.toLowerCase())) {
continue;
}
arr.push(myWord1.toLowerCase());
}
}
alert(arr); // Убеждаемся, что функция "isElement" исправно работает
var myPage = myDoc.pages[0];
var myTextFrame = myPage.textFrames[0];
//
for (j=0; j <= myTextFrame.words.length-1; j++){
var myWord = myTextFrame.words[j];
if (arr.isElement(myWord)) {continue;}
alert(myWord.contents); // А здесь она почему-то перестает работать?
myWord.contents.fillColor = "myAbsentColor"; // И почему-то не окрашиваются слова, которые, якобы отсутствуют в словаре?
}