Свойства и функции списка ответов

Список ответов для вопроса доступен через объект answers. В основном answers используется для доступа к ответам по коду, например Q.answers[5], но также предоставляет набор различных свойств и функций. Часть функций, для удобства, доступно для вызова через сам вопрос, например Q.show(5) равнозначно вызову Q.answers.show(5).

Большинство методов дублируются в вопросе, для удобства использования.

count

Возвращает общее количество вариантов ответа в списке.

visibleCount

Возвращает количество видимых вариантов ответа. Например:

return Q.answers.visibleCount > 1 ? ok : skip;

getAll()

Возвращает все варианты ответа в виде массива. Например:

Q.answers.getAll().forEach(function (a) {
    a.text += 'Вариант ответа с кодом ' + a.code + '<br>';
}); 

getCodes()

Возвращает массив кодов всех вариантов ответа.

getVisibleCodes()

Возвращает массив кодов всех видимых вариантов ответа.

getVisible()

Возвращает видимые варианты ответа в виде массива.

getCheckedCodes()

Возвращает массив кодов выбранных вариантов ответа (работает как для единственного, так и для множественного выбора).

getChecked()

Возвращает выбранные варианты ответа в виде массива. Например:

var s = '';
Q.answers.getChecked().forEach(function (a) {
    s += s.length > 0 ? ', ' : '';
    s += a.text;
});
variables['checked'] = s;

getCheckedCode()

Возвращает код варианта ответа, который выбран в вопросе с единственным выбором. Если ничего не выбрано - возвращает 0. При вызове для вопроса с множественным выбором, возвратит код первого по порядку выбранного варианта ответа.

isChecked(code)

Возвращает true, если выбран вариант ответа с кодом code.

showAll()

Делает видимыми все варианты ответа в вопросе.

show(code, codes, answer, row, column)

Делает видимыми варианты ответа, коды которых переданны в параметрах. Может принимать 1 код, массив кодов или объект ответа, строки или колонки таблицы. Количество параметров и их порядок значения не имеют. Например:

Q.answers.show(1, [3,5,6], Q.answers[8], Q3.rows[10], Q6.columns[12]);
Q.answers.show(Q1.getCheckedCode(), Q2.getCheckedCodes());

showOnly(code, codes, answer, row, column)

Делает видимым только варианты ответа, коды которых переданны в параметрах. Остальные ответы будут скрыты. Может принимать 1 код, массив кодов или объект ответа, строки или колонки таблицы. Количество параметров и их порядок значения не имеют.

showCodes(codes)

Делает видимыми варианты ответа, коды которых содержатся в переданном массиве codes. Вместо этого метода рекомендуется использовать более универсальный show().

showOnlyCodes(codes)

Делает видимыми только варианты ответа, коды которых содержатся в переданном массиве codes. Вместо этого метода рекомендуется использовать более универсальный showOnly().

showFromTo(codeFrom, codeTo)

Делает видимыми все варианты ответа, коды которых попадают в диапазон от codeFrom до codeTo. Например:

Q.answers.showFromTo(2, 50);

showOnlyFromTo(codeFrom, codeTo)

Делает видимыми только те варианты ответа, коды которых попадают в диапазон от codeFrom до codeTo.

hideAll()

Скрывает все варианты ответа в вопросе. Варианты ответа, у которых установлен флаг Всегда отображается, остаются всегда видимыми.

hide(code, codes, answer, row, column)

Скрывает варианты ответа, коды которых переданны в параметрах. Может принимать 1 код, массив кодов или объект ответа, строки или колонки таблицы. Количество параметров и их порядок значения не имеют.

hideCodes(codes)

Скрывает варианты ответа, коды которых содержатся в переданном массиве codes. Вместо этого метода рекомендуется использовать более универсальный hide().

hideFromTo(codeFrom, codeTo)

Скрывает все варианты ответа, коды которых попадают в диапазон от codeFrom до codeTo.

hasVisible

Возвращает true, если есть хотя бы один видимый вариант ответа. Например:

return Q.answers.hasVisible ? ok : skip;

randomize()
randomize(codes)
randomizeFromTo(fromCode, toCode)

Перемешивает случайным образом либо все ответы, либо указанные, если в качестве параметра передан массив кодов ответов, либо все ответы в указанном диапазоне.

Q.answers.randomize();
Q.answers.randomize([1,3,5,7]);
Q.answers.randomizeFromTo(10, 20);

rotate()
rotate(shift)
rotate(codes)
rotate(codes, shift)
rotateFromTo(fromCode, toCode)
rotateFromTo(fromCode, toCode, shift)

Производит ротацию ответов (циклический сдвиг на определенный шаг). Если не переданы никакие параметры - ротируются все ответы. Также можно передать шаг сдвига в параметре shift, при этом если шаг не передается - используется внутренний шаг, который автоматически увеличивается на 1 для каждого следующего интервью, что дает правильное равномерное распределение. Для ротации определённых ответов нужно передать массив codes с кодами этих ответов. Также в параметрах from и to можно указать диапазон ответов, подлежащих ротации. Примеры:

Q.answers.rotate();
Q.answers.rotate(5);
Q.answers.rotate([1,2,3,4,5,6]);
Q.answers.rotate([1,2,3,4,5,6], 5);
Q.answers.rotateFromTo(1, 6);
Q.answers.rotateFromTo(1, 6, 5);

setOrder(orderedCodes)

Устанавливает необходимый порядок следования вариантов ответа. В параметре orderedCodes передается массив кодов вариантов ответов, в необходимом порядке. Например:

Q.answers.setOrder([5,4,3,2,1]);

add(code, text)

Добавляет новый вариант ответа с указанным кодом и текстом в конец списка. Созданный вариант ответа возвращается как результат. Например:

// добавляем новый ответ 99 в конец списка
var answer = Q.answers.add(99, 'Не знаю');
// включаем в нём флаг "Блокирующий / исключающий"
answer.flags |= 0x0010;

insert(refCode, code, text)

Создает новый вариант ответа с указанным кодом и текстом и вставляет его перед вариантом ответа, код которого указан в параметре refCode. Созданный вариант ответа возвращается как результат. Например:

// добавляем новый ответ 5 перед ответом 6
Q.answers.insert(6, 5, 'Москва');

insertAfter(refCode, code, text)

Создает новый вариант ответа с указанным кодом и текстом и вставляет его после варианта ответа, код которого указан в параметре refCode. Созданный вариант ответа возвращается как результат. Например:

// добавляем новый ответ 7 после ответа 6
Q.answers.insertAfter(6, 7, 'Санкт-Петербург');

remove(code)
remove(answer)

Удаляет указанный вариант ответа. Например:

// удаляем ответ 5 из списка
Q.answers.remove(5);
// то же самое:
Q.answers.remove(Q.answers[5]);

load(fromQuestion)
load(fromList)

Загружает варианты ответа из другого вопроса либо из другого списка вариантов ответа. Например:

Q.answers.load(Q3);
Q.answers.load(Q3.rows);


Читайте далее: свойства и функции строки табличного вопроса.