2016-09-21 7 views
0

私は新しいアンケートをデザインしています。私の選択肢の質問の1つでは、選択肢は1秒間隠されていると思われ、ユーザーは回答する前に質問にもっと注意を払う傾向があります。 これまでのところ、私のコードは選択肢を隠すことができますが、待っているだけで表示はまだありません。 (下のコード)Qualtrics、Javascript:一時停止を実装し、以前隠された選択肢を表示する方法は?

この問題の解決方法に関するお手伝いやご提案ありがとうございます。

Qualtrics.SurveyEngine.addOnload(function() { 
    this.hideNextButton(); 
    this.hideChoices(); 

    //HERE I WOULD LIKE THE CODE TO WAIT FOR 1 sec 

    //HERE I WOULD LIKE THE CHOICES TO REAPPEAR ON THE SCREEN 

    this.questionclick = function (event, element) { 
     if (this.getChoiceValue(4) == true) { 
      this.clickNextButton(); 
     } else if (this.getChoiceValue(5) == true) { 
      this.clickNextButton(); 
     } 
    } 
}); 
+0

あなたは1000ミリ秒で、[setTimeoutメソッド](http://www.w3schools.com/jsref/met_win_settimeout.asp)を使用することができます –

答えて

1

ここで問題の2つの部分があります。

  1. どのように1秒待つのですか?これはsetTimeout()とコールバック関数で行われます。
  2. コールバック関数が適切なオブジェクトで機能することを確認するにはどうすればよいですか? - これは、作業したいオブジェクトを変数に格納することによって行われます。

ので、Qualtrics SurveyEngineについて何も知らなくても、onLoadコールバック内部thisがあなたの調査オブジェクトを参照していることを、あなたのコードから明らかです。後でsetTimeoutコールバックにそのオブジェクトが必要なので、保存しておきましょう。残りは簡単です:

Qualtrics.SurveyEngine.addOnload(function() { 
    var survey = this; 

    // attach click event handler  
    self.questionclick = function (event, element) { 
    // using `survey` instead of `this` would work here, too 
    if (this.getChoiceValue(4) || this.getChoiceValue(5)) { 
     this.clickNextButton(); 
    } 
    }; 

    // hide buttons 
    survey.hideNextButton(); 
    survey.hideChoices(); 

    // after 1000ms, show buttons again 
    setTimeout(function() { 
    survey.showNextButton(); 
    survey.showChoices(); 
    }, 1000); 
}); 
関連する問題