Не то что ускоряет, просто были какие то прецедентыхотя я уже не уверен. вроде getElements() для этого достаточно. надо проверять, ускоряет ли slice() или нет
А мне кажется, вы невнимательно читаете тред, перечитайте, пожалуйста, последние сообщения.Мне тоже кажется, что для этой задачи нужен только getElements()
Оператор slice() работает с контентной частью, вот примеры использования:
------
// добавить нули перед числом:
0 - 000, 1 - 001, ... 11 - 011 ...
function pad (n) {
return ('00'+n).slice(-3);
}
///===
// способ убедиться, что myFile -- это индизайновский файл
if (myFile.name.slice(-5) == ".indd") { return true } ;
-----
При чем тут контентная информация? Вовсе нет> slice() на массиве возвращает новый массив - копию оригинала.
Но этот массив -- уже контентная часть того, что собрано при помощи getElements(), разве не так?
А тут надо искать границу приложения стиля. Для решения этой задачи только contents-информации недостаточно.
Как подкрутить хвост "рыбе", чтоб плавала быстрее???
var beg = app.selection[0].paragraphs[0];
var style = beg.appliedParagraphStyle;
var index = beg.index;
var end = beg;
var count = 1;
while (para = beg.parent.paragraphs[index + count], para.isValid && para.appliedParagraphStyle != style) {
end = para;
count++;
}
var text = beg.parent.characters.itemByRange(beg.characters[0], end.characters[end.characters.length - 1]);
text.select();
ну, краткий курс JS мы все уже не раз проходили ) возможно топикстартеру это будет интересно, впрочемДа, я был не прав.
Видимо, из-за того, что иначе использовал этот оператор.
Да, slice() создаёт новый массив.
Если var para = ms.paragraphs.everyItem().getElements();
вернет в para шесть абзацев, то
то var pS = para.slice(); -- это ссылка на массив из этих шести абзацев.
варианты para.slice() и para.slice(0) идентичны.
pS = para.slice(2) -- ссылка на массив из четырёх абзацев из para, начиная с индекса 2
Выделять текст нет никакого смысла. Его можно и так обрабатывать.JavaScript:var beg = app.selection[0].paragraphs[0]; var style = beg.appliedParagraphStyle; var index = beg.index; var end = beg; var count = 1; while (para = beg.parent.paragraphs[index + count], para.isValid && para.appliedParagraphStyle != style) { end = para; count++; } var text = beg.parent.characters.itemByRange(beg.characters[0], end.characters[end.characters.length - 1]); text.select();
Вы уж совсем какого-то экстремального вангования хотите - мало того, что вам готовая быстроплавающая рыба нужна, так еще и в любом резервуаре с произвольной кислотой. Откуда ж мы по скриншоту поймем, как там у вас параграфы накручены?
var beg = app.selection[0].paragraphs[0];
var style = beg.appliedParagraphStyle;
var end = beg;
while (true) {
chr = end.parent.characters[end.characters[end.characters.length - 1].index + 1];
if (!chr.isValid || chr.appliedParagraphStyle == style) {
break;
}
end = chr.paragraphs[0];
}
var text = beg.parent.characters.itemByRange(beg.characters[0], end.characters[end.characters.length - 1]);
text.select();
Спасибо! То что надо! Чувствуется рука мастера.JavaScript:var beg = app.selection[0].paragraphs[0]; var style = beg.appliedParagraphStyle; var end = beg; while (true) { chr = end.parent.characters[end.characters[end.characters.length - 1].index + 1]; if (!chr.isValid || chr.appliedParagraphStyle == style) { break; } end = chr.paragraphs[0]; } var text = beg.parent.characters.itemByRange(beg.characters[0], end.characters[end.characters.length - 1]); text.select();