2015-11-18 151 views
0

作爲我們研究的一部分,我們從使用Qualtrics的參與者收集調查。 Qualtrics有一個簡潔的小功能,您可以在一個問題中嵌入一些Javascript代碼。我們有一項研究,需要計算從完成第一次調查的時間與完成當前調查的天數之間的差異,但計算似乎在移動設備上運行不一致。該代碼現在看起來是這樣的: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,但有時它工作正常。它會有一天工作,而不是相同的手機,相同的瀏覽器,相同的一切。我把它設置成循環通過10天的daydiff計算,認爲這可能會有所作爲。我們在iOS和Android設備上都看到了這個問題,但從未在桌面設備上看到過這個問題。 Javascript已在這些設備上啓用。有任何想法嗎?

回答

1

我不知道爲什麼它沒有在移動設備上工作,但有兩個思路:

1)我不知道你在哪裏定義todayDate爲日期對象。你不需要:

var todayDate = new Date(); 

之前的差異計算?

2)通過調用調查流程中的簡單Web服務來執行計算,可以使設備和瀏覽器不受影響。它可以是一個簡單的PHP腳本,你可以通過day1date並返回差異。一個好處是你會使用一致的時間源。