2016-12-12 1 views
1

Я бы хотел использовать Javascript для настройки логики отображения для отдельных строк в одном задании матрицы матриц в Qualtrics. Я всегда делал это в прошлом с помощью обычного метода перехода по клику, но у меня часто есть еще 100 строк для этого, и это сэкономит массу времени, чтобы сделать это программно.Использовать Javascript для логики отображения таблицы матриц Qualtrics

Я попытался вставить следующий текст в «Добавить JavaScript» на вопрос я пытаюсь добавить логику дисплея:

Qualtrics.SurveyEngine.addOnload(function() 
{ 
    /*Set display logic*/ 
    if ('${q://QID2/SelectedAnswerRecode/1}' < 3) {'${q://QID3/ChoiceDescription/1}'.style.visibility='hidden';} 
    if ('${q://QID2/SelectedAnswerRecode/2}' < 3) {'${q://QID3/ChoiceDescription/2}'.style.visibility='hidden';} 
}); 

Идея заключается в том, что ответ со значением по крайней мере, 3 в строке 1 QID2 (также таблица с одним выбором матрицы) требуется для отображения строки 1 таблицы таблицы QID3 и т. д. Как это, это кажется не отвечает - строки в QID3 по-прежнему отображаются, даже если выбранные значения в соответствующих строках QID2 являются < 3.

Я также попытался style.display='none' вместо style.visibility='hidden' без успеха. Мой опыт работы с Javascript ограничен, поэтому я подозреваю, что это проблема синтаксиса.

ответ

1

Используйте Inspect Element в браузере с опросом в режиме предварительного просмотра, чтобы найти идентификатор элемента для заголовка строки матрицы, в которой будет отображаться логика отображения. .up().hide() будет захватывать остальную часть строки. Котировки вокруг идентификаторов необходимы из-за «~» в именах идентификаторов; в противном случае я получаю ошибку «неожиданного маркера» при попытке сохранить его. Спасибо Т. Гиббонсу за то, что он указал мне в правильном направлении.

Qualtrics.SurveyEngine.addOnload(function() 
{ 
    /*Set display logic*/ 
    if ('${q://QID2/SelectedAnswerRecode/1}' < 3) {$('header~QID3~1').up().hide();} 
    if ('${q://QID2/SelectedAnswerRecode/2}' < 3) {$('header~QID3~2').up().hide();} 
    if ('${q://QID2/SelectedAnswerRecode/3}' < 3) {$('header~QID3~3').up().hide();} 
    if ('${q://QID2/SelectedAnswerRecode/4}' < 3) {$('header~QID3~4').up().hide();} 
    if ('${q://QID2/SelectedAnswerRecode/5}' < 3) {$('header~QID3~5').up().hide();} 
}); 

Скопировать/вставить/изменить при необходимости.

+0

Qualtrics загружает и использует prototypejs, поэтому он всегда доступен для вас в Qualtrics ... вам не нужно ничего делать. –

+0

Не хотите ли прятать целую строку вместо отдельных ячеек и радиовходов? Попробуйте: $ ('header ~ QID3 ~ 1'). Up(). Hide(); вместо всего вашего дисплея = нет строк. –

+0

@ T.Gibbons да, что сработало отлично! Я переработаю ответ, чтобы отразить это. – bcarothers

2

Проблема действительно в синтаксисе. Вам нужно скрыть элемент html и '$ {q: // QID3/ChoiceDescription/1}' не является элементом html (это внутреннийHTML метки). Даже если это был элемент html, синтаксис неверен (он не будет в кавычках).

Лучше использовать prototypejs, когда это возможно, так что если элемент был назван «элемент» команда будет:

element.hide(); 

Чтобы найти правильные элементы, чтобы скрыть, что вам нужно определить и найти их идентификатор элемента или некоторую комбинацию тега элемента, класса и атрибута. Это можно сделать с использованием описания выбора, но для этого потребуется намного больше кода и не будет очень эффективным.

Смежные вопросы