Свойства и функции списка ответов
Список ответов для вопроса доступен через объект answers. В основном answers используется для доступа к ответам по коду, например Q.answers[5], но также предоставляет набор различных свойств и функций.
Все методы и свойства списка ответов дублируются в вопросе и доступны для вызова через него. Например, вместо Q.answers.show(5)
можно написать короче: Q.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()
Возвращает выбранные варианты ответа в виде массива. Например:
// получить массив и обратиться к первому (по порядку расположения ответов в вопросе) выбранному ответу
let allChecked = Q.answers.getChecked();
let aText = allChecked[0].text;
let aCode = allChecked[0].code;
// составить строку, в которой через запятую перечислены все выбранные ответы
let s = '';
Q.answers.getChecked().forEach(function (a) {
s += s.length > 0 ? ', ' : '';
s += a.text;
});
variables['checked'] = s;
getCheckedOrderedCodes()
Возвращает массив кодов вариантов ответа в порядке их выбора (в вопросе с выбором ответа) или расстановки (в вопросе ранжирования ответов). Например, показать только выбранные ответы в порядке выбора:
Q.answers.showOnly(Q1.getCheckedCodes());
Q.answers.setOrder(Q1.getCheckedOrderedCodes());
getCheckedOrdered()
Возвращает варианты ответа в виде массива в порядке их выбора (в вопросе с выбором ответа) или расстановки (в вопросе ранжирования ответов).
getCheckedCode([true])
Возвращает код варианта ответа, который выбран в вопросе с единственным выбором. При вызове для вопроса с множественным выбором, возвратит код первого по порядку выбранного варианта ответа.
Если в вопросе ничего не выбрано - возвращает 0 при вызове без аргумента. Если передать true – возвращает undefined.
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 код, массив кодов или объект ответа, строки или колонки таблицы. Количество аргументов и их порядок значения не имеют, главное - должно быть передано не меньше одного аргумента.
showFromTo(codeFrom, codeTo)
Делает видимыми все варианты ответа, коды которых попадают в диапазон от codeFrom до codeTo. Например:
Q.answers.showFromTo(2, 50);
showOnlyFromTo(codeFrom, codeTo)
Делает видимыми только те варианты ответа, коды которых попадают в диапазон от codeFrom до codeTo.
hideAll()
Скрывает все варианты ответа в вопросе. Варианты ответа, у которых установлен флаг Всегда отображается, остаются всегда видимыми.
hide([code, codes, answer, row, column])
Скрывает варианты ответа, коды которых переданы в аргументах. Может принимать 1 код, массив кодов или объект ответа, строки или колонки таблицы. Количество аргументов и их порядок значения не имеют, главное - должно быть передано не меньше одного аргумента.
hideOnly([code, codes, answer, row, column])
Скрывает только варианты ответа, коды которых переданы в аргументах. Остальные ответы останутся видны. Может принимать 1 код, массив кодов или объект ответа, строки или колонки таблицы. Количество аргументов и их порядок значения не имеют, главное - должно быть передано не меньше одного аргумента.
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);
randomizeGroups(groups)
randomizeGroups(groupSize, firstNumbers)
Перемешивает случайным образом группы ответов.
В аргументе groups передаётся массив с массивами кодов первого и последнего ответа в группе. Если группы ответов одинакового размера, то в первом аргументае (groupSize) можно указать количество ответов в группе, а во втором — массив кодов первых ответов в каждой группе.
Порядок ответов внутри группы не изменяется.
Примеры.
- Есть ответы с кодами: 1,2, 3,4,5,6,7,8, 9, 98,99 Необходимо перемешать между собой ответы группами 1-2, 3-8, и 9. Сделать это можно так:
Q.answers.randomizeGroups([[1,2], [3,8], [9,9]]);
- Есть ответы с кодами: 1,2,3, 4,5,6, 7,8,9, 98,99 Необходимо перемешать между собой ответы группами 1-3, 4-6, 7-9. Сделать это можно так:
Q.answers.randomizeGroups(3, [1,4,7]);
// или
Q.answers.randomizeGroups([[1,3], [4,6], [7,9]]);
rotate()
rotate([codes [, shift]])
rotateFromTo(codeFrom, codeTo [, 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);
rotateGroups(groups [, shift])
rotateGroups(groupSize, firstNumbers [, shift])
Ротация ответов группами. Работает по аналогии с функцией randomizeGroups Примеры:
Q.answers.rotateGroups([[1,3], [4,6], [7,9]]);
Q.answers.rotateGroups([[1,3], [4,6], [7,9]], 2);
Q.answers.rotateGroups(3, [1,4,7]);
Q.answers.rotateGroups(3, [1,4,7], 2);
setOrder(orderedCodes)
Устанавливает необходимый порядок следования вариантов ответа. В аргументе 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);