2016-11-01 5 views
1

Je fais des recherches avec une expérience en utilisant qualtrics et malheureusement, je suis complètement nouveau pour le codage. Dans mon expérience, un bloc de questions devrait être terminé après un certain temps (dans ce cas 50 secondes). Jusqu'à présent, j'ai utilisé une solution (que j'ai trouvé ici: https://research-it.wharton.upenn.edu/uncategorized/qualtrics-loop-merge-tips/) qui est apparue plutôt propre en utilisant une variable incorporée vide "test_time", la logique d'affichage et le code javascript suivant que j'ai copié à chaque page du bloc: Qualtrics & Javascript précis minuterie en utilisant le temps dépensé sur une page

Qualtrics.SurveyEngine.addOnload(function() 
{ 
    var elapsed = Date.now() - Number("${e://Field/test_time}"); 
    if (elapsed >= 50000){ 
    Qualtrics.SurveyEngine.setEmbeddedData("test_time", 0); 
} 
}); 
Cependant, dans les données exportées lorsque je résume les informations des questions de timing que j'ai incluses, je vois que les gens ont un temps extrêmement variable qu'ils peuvent réellement passer sur les questions du bloc (de 30 à presque 50 secondes). Je suppose que cela est dû au fait que le script utilise l'heure de l'horloge, indépendamment du décalage causé par une mauvaise connexion Internet ou un navigateur lent.

Cependant, pour mon projet, il est important que les gens aient le même temps pour la tâche. Je pense que je pourrais utiliser l'information des questions de synchronisation, mais de toute façon je ne peux pas y accéder en Javascript. Une autre idée consiste à enregistrer la différence entre la page apparaissant et le clic sur le bouton suivant.

J'ai apprécié l'une de vos idées et contributions!

Répondre

0

Utilisez la variable intégrée Q_TotalDuration, qui correspond à la durée d'analyse écoulée en secondes. Réglez l'heure de début du bloc dans le flux d'enquête juste avant le bloc:

startBlock = ${e://Field/Q_TotalDuration} 

Ensuite, votre JavaScript devient:

var elapsed = parseInt("${e://Field/Q_TotalDuration}") - parseInt("${e://Field/startBlock}"); 
if(elapsed >= 50) { 
    //do something here 
} 

Je ne comprends pas ce qui se passe lorsque la limite de temps est atteinte et time_test est mis à zéro dans votre code d'origine. Cela n'aurait aucun impact sur la page actuelle. Il semble que vous devriez configurer une fonction de délai d'attente pour cliquer sur le bouton Suivant lorsque le seuil de temps est atteint.