>

Qualtrics에서 30 행으로 나란히있는 질문이 있습니다. 처음 20 개의 행 각각에는 이전 질문에서 텍스트 상자에 무언가를 입력 할 때만 표시되도록 표시 논리가 있습니다. 마지막 10 개 행 각각에는 전체 질문에 10 개 이상의 행이 표시되도록 표시 논리가 있습니다. 즉, 첫 번째 20 개 중 어느 것도 표시되지 않으면 21 행이 표시되고 첫 번째 20 개 중 하나만 표시되면 22 행이 표시됩니다. ... 첫 번째 행 중 9 개가 표시되면 30 행이 표시되고, 첫 번째 행 중 10 개 이상이 표시되면 표시되지 않습니다.

질문의 첫 번째 열은 확인란이며 다음 자바 스크립트를 사용하여 마지막 10 개 행의 확인란을 숨 깁니다.

Qualtrics.SurveyEngine.addOnload(function()
{
var qid = this.questionId;
var p = $(qid);
p.down('label[for="QR~'+qid+'#1~21~1"]').hide();
p.down('label[for="QR~'+qid+'#1~22~1"]').hide();
p.down('label[for="QR~'+qid+'#1~23~1"]').hide();
p.down('label[for="QR~'+qid+'#1~24~1"]').hide();
p.down('label[for="QR~'+qid+'#1~25~1"]').hide();
p.down('label[for="QR~'+qid+'#1~26~1"]').hide();
p.down('label[for="QR~'+qid+'#1~27~1"]').hide();
p.down('label[for="QR~'+qid+'#1~28~1"]').hide();
p.down('label[for="QR~'+qid+'#1~29~1"]').hide();
p.down('label[for="QR~'+qid+'#1~30~1"]').hide();
});

이전 행이 표시되지 않으면 제대로 작동합니다 :

그러나 이전 행 중 하나라도 표시되면 폭탄 :

Inspect Element 와 함께 찌르고  미리보기에서 태그가 어떻게 변경되었는지 확인했지만 ID를 변경하는 한 예기치 않은 것을 찾을 수 없었습니다. 처음 20 개 행이 표시되지 않는 경우 23 행의 확인란 요소를 확인할 때 :

<input id="QR~QID4#1~23~1" name="QR~QID4#1~23~1" value="Selected" 
data-runtime-checked="runtime.Children.1.Choices.23.Answers.1.Selected" 
aria-labelledby="question1QID4 question1QID4-answer1QID4 choice23QID4"
class="QWatchTimer" type="checkbox">
<label for="QR~QID4#1~23~1" class="q-checkbox" data-runtime-class
-q-checked="runtime.Children.1.Choices.23.Answers.1.Selected" 
style="display: none;"></label>

예상대로 레이블 코드가 회색으로 표시됩니다. 처음 20 개 행 중 하나가 나타나면 거의 동일하지만 style="display: none;"  끝에 나타나지 않습니다 :

<input id="QR~QID4#1~23~1" name="QR~QID4#1~23~1" value="Selected" 
data-runtime-checked="runtime.Children.1.Choices.23.Answers.1.Selected" 
aria-labelledby="question1QID4 question1QID4-answer1QID4 choice23QID4"
class="QWatchTimer" type="checkbox">
<label for="QR~QID4#1~23~1" class="q-checkbox" data-runtime-class
-q-checked="runtime.Children.1.Choices.23.Answers.1.Selected"></label>

디스플레이 로직 활성화가 Javascript를 방해하는 방식으로 인해 상실되었습니다.

  • 답변 # 1

    몇 시간의 여과 후에, 디스플레이 로직이 Javascript로 아이템을 숨기면 해당 스크립트가 실행되지 않는다는 것을 기억했습니다. 한 줄씩이 아니라는 것을 알지 못했습니다. 한 줄의 코드로 제어되는 한 요소가 숨겨져 있으면 전체 코드 블록이 무효화되는 것처럼 보입니다.

    표시 될 행만 동적으로 고려한 루프로 해결할 수있었습니다 :

    Qualtrics.SurveyEngine.addOnload(function()
    {
        //Remove checkboxes for last ten options
        var qid = this.questionId;
        var p = $(qid);
        var count = Qualtrics.SurveyEngine.getEmbeddedData('count');
        var min = 21+count;
        for (var i = min; i < 31; i++) {
            p.down('label[for="QR~'+qid+'#1~'+i+'~1"]').hide();
        }
    });
    
    

    적어도 내 경우에는 count  변수를 사용하여 표시 할 마지막 10 개 행 수를 결정했습니다. 일단 루프의 매개 변수에 내장하면 디스플레이 논리에 의해 무효화되는 것은 없습니다. (관심이있는 경우 여기에서 프로세스를 확인하십시오.)

    레슨은 다음과 같이 배웠습니다. 루프를 사용하여 시작해야했습니다. 매개 변수 수정은 그 후의 쉬운 단계입니다.

  • 이전 scala - 더 이상 사용되지 않는 SBT 빌드 파일 변환
  • 다음 ios - queryordered (bychild - "name")이있는 firebase 데이터를 선택하십시오