[ID CS4-CS6] Количество страниц в книге

~RA~

Одарённая.
12 лет на форуме
Сообщения
11 885
Реакции
3 457

~RA~

Одарённая.
12 лет на форуме
Сообщения
11 885
Реакции
3 457
Надо на каждой итерации разбирать возвращаемую строку на до "-" и после, приводить это к числу, из после вычитать до и складывать полученные результаты.
 

Elsynor

Tesseract
12 лет на форуме
Сообщения
1 282
Реакции
1 377
Код:
var st=0;

with (app.activeBook) do

{

for (var i=0;i<bookContents.length;i++)

{

st+=(bookContents[i].documentPageRange.split("-").length == 2) ? Number(bookContents[i].documentPageRange.split("-")[1]) : Number(bookContents[i].documentPageRange);

}

}

alert(st);
 
Последнее редактирование:
  • Спасибо
Реакции: Masia

~RA~

Одарённая.
12 лет на форуме
Сообщения
11 885
Реакции
3 457
А если нумерация не с 1?
 

Masia

Топикстартер
15 лет на форуме
Сообщения
127
Реакции
47
Код:
var st=0;

with (app.activeBook) do

{

for (var i=0;i<bookContents.length;i++)

{

st+=(bookContents[i].documentPageRange.split("-").length == 2) ? Number(bookContents[i].documentPageRange.split("-")[1]) : Number(bookContents[i].documentPageRange);

}

}

alert(st);
Выдает ошибку.
 

Вложения

  • book-error (5).jpg
    book-error (5).jpg
    104.1 КБ · Просм.: 285

Elsynor

Tesseract
12 лет на форуме
Сообщения
1 282
Реакции
1 377
Код:
st+=(bookContents[i].documentPageRange.split("-").length == 2) ? Number(bookContents[i].documentPageRange.split("-")[1])-Number(bookContents[i].documentPageRange.split("-")[0])+1 : Number(bookContents[i].documentPageRange);
 
  • Спасибо
Реакции: Masia

Masia

Топикстартер
15 лет на форуме
Сообщения
127
Реакции
47
А если нумерация не с 1?
Вот, да. Какие-нибудь приложения к книге вполне могут иметь нумерацию и буквенную, и с префиксами...

Но мне хотя бы простой случай, где нумерация только цифровая.
 

Masia

Топикстартер
15 лет на форуме
Сообщения
127
Реакции
47
Ошибка.
book-error (6).jpg
 

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
после with () сотрите do

(вообще говоря, конструкцию with() не рекомендуется использовать)
 
  • Спасибо
Реакции: Masia

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
Да не совсем. Я не зря вас про запятые спросил - если есть диапазон типа 1,3,5-6,8,10-12... то такой скрипт работать не будет. Вдобавок, у Эльсинора в случае одиночной страницы надо на единицу количество увеличивать, а не на ее номер.
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
На самом деле примерно так:
JavaScript:
var st=0;

with (app.activeBook)

{

for (var i=0;i<bookContents.length;i++)

{
var pgs=bookContents[i].documentPageRange.split(",");
    for (var j=0;j<pgs.length,j++)
        {
          st+=(pgs[j].split("-").length == 2) ? pgs[j].split("-")[1]-pgs[j].split("-")[0]) : 1;
        }
}

}

alert(st);
 
  • Спасибо
Реакции: Masia

Masia

Топикстартер
15 лет на форуме
Сообщения
127
Реакции
47
надо на единицу количество увеличивать, а не на ее номер.
Мне нужно узнать именно количество, а не номер.

Скрипт от Эльсинора отлично считает количество страниц в книге. Пробовала составлять ее в различных вариациях, считает вне зависимости от конструктивных особенностей входящих документов.

Ваш последний скрипт попробовала (даже смогла исправить пару ошибок-опечаток ;]=), он не досчитывает страницы.
Elsynor_vs_MBK (2).jpg Elsynor_vs_MBK.jpg
 

Elsynor

Tesseract
12 лет на форуме
Сообщения
1 282
Реакции
1 377
Да прав он, прав, если в первой доке будет одна страница с номером 5, то будет ошибка.
В длинной строке всё убить между двоеточием и точкой с запятой и поставить 1. Ну как у Мишки…