作为我们研究的一部分,我们使用 Qualtrics 从参与者那里收集调查。 Qualtrics 有一个简洁的小功能,您可以在其中将一些 Javascript 嵌入到问题中。我们有一项研究,我们需要计算他们完成第一次调查与完成当前调查的天数差异,但计算在移动设备上似乎不一致。现在的代码如下所示:
Qualtrics.SurveyEngine.addOnload(function()
{
var surv1date=new Date("${e://Field/day1date}");
surv1date.setHours(0);
surv1date.setMinutes(0);
surv1date.setSeconds(0);
surv1date.setMilliseconds(0);
var one_day=86400000;
var difference = Math.abs(todayDate.getTime() - surv1date.getTime())/one_day + 1;
Math.round(difference);
var intCount = 1;
var daydiff = null;
do {
//$('daydiff').value = Math.round(difference);
Qualtrics.SurveyEngine.setEmbeddedData('daydiff', Math.round(difference));
daydiff = Math.round(difference);
intCount++;
}
while (intCount <= 10 && (daydiff == undefined || daydiff == null || daydiff == NaN || isNaN(daydiff) == true));
var strday = "on Day ";
var strfinal = strday.concat(daydiff);
var newQuestionText = questionText.replace("on Day", strfinal);
$(this.questionContainer).down('.QuestionText').innerHTML = newQuestionText;
});
;
在移动设备上,有时会出现此代码未正确运行且未计算 daydiff 的情况,但其他时候它运行良好。它会在同一部手机、同一浏览器和相同的一切上工作一天,而不是下一天。我将其设置为循环执行 daydiff 计算最多 10 次,认为这可能会产生影响。我们已经在 iOS 和 Android 设备上看到过这个问题,但从未在桌面设备上看到过。这些设备上启用了 Javascript。有任何想法吗?
最佳答案
我不知道为什么它不能在移动设备上运行,但有两个想法:
1) 我没有看到您在哪里将 todayDate 定义为日期对象。难道你不需要:
var todayDate = new Date();
差异计算之前?
2) 您可以通过从调查流程中调用一个简单的网络服务来进行计算,从而将设备和浏览器排除在外。它可以是一个简单的 php 脚本,您将 day1date 传递给它并返回差异。附带的好处是您将使用一致的时间源。
关于javascript - Qualtrics Javascript 在移动设备上运行不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33786694/