Unusal JS代码部分

时间:2017-04-03 18:12:18

标签: javascript qualtrics

所以我是JS新手,但我有人写了一些代码,用于Qualtics调查。该代码现已破坏,我正在尝试解决此问题,此行存在错误:

var timingObj=${e://Field/TimingObj};

我希望有人可以帮我解释一下这条线,这样我就可以解决它了。 (我必须完整的代码,但是有人经历这似乎有点长。)我理解第一部分是设置名为timingobj的变量等于某事。

这对我来说很困惑,特别是对于" //"我理解为表示注释而不是代码。这段代码过去曾有效,但现在给了我一个错误。任何帮助理解我正在使用的将是惊人的。

谢谢!

更新提供给我的完整代码:

//configurations
var bindInterval=10;

//initiate
var timingObj=${e://Field/TimingObj};



timingObj.version=3;

var startTiming=function(tag){
var currentTimeObj=timingObj[tag];
if (!currentTimeObj) {
    currentTimeObj={};
    currentTimeObj.startTimes=[];
    currentTimeObj.elapseTimes=[];
    currentTimeObj.totalElapsed=0;
    timingObj[tag]=currentTimeObj;
} 
var time=(new Date()).getTime();
currentTimeObj.startTimes.push(time);
currentTimeObj.startTime=time;
timingObj.activateTag=tag;
};

var closePopupCallback=function(){
//stop timing
var time=(new Date()).getTime();
var currentTag = timingObj.activateTag;
var currentTimeObj = timingObj[currentTag];
var elapsed=time - currentTimeObj.startTime;
currentTimeObj.elapseTimes.push(elapsed);
var totalElapsed=currentTimeObj.totalElapsed + elapsed;
currentTimeObj.totalElapsed=totalElapsed;
Qualtrics.SurveyEngine.setEmbeddedData(currentTag+'_Time',totalElapsed);
    Qualtrics.SurveyEngine.setEmbeddedData(currentTag+'_Count',currentTimeObj.startTimes.length);
var timingObjSerialized=Object.toJSON(timingObj);
Qualtrics.SurveyEngine.setEmbeddedData('TimingObj',timingObjSerialized);

};


var bindCloseEvent=function() {
//window.document.observe('dom:loaded',func) and document.observe('dom:loaded',func) did not work
var closeButton=$('bottomNavClose');
if (closeButton) {
    closeButton.observe('click', closePopupCallback);
} else{
    setTimeout(bindCloseEvent,bindInterval);
}
};
// bad smell
var bindLightBoxCloseEvent=function(){
var lightBox=$('lightbox');
if (lightBox) {
    lightBox.observe('click', closePopupCallback);
} else{
    setTimeout(bindLightBoxCloseEvent,bindInterval);
}
};

bindLightBoxCloseEvent();
bindCloseEvent();

Qualtrics.SurveyEngine.addOnload(function(){

});

1 个答案:

答案 0 :(得分:1)

这应该是一个简单的解决方法:

尝试:

var timingObj = "${e://Field/TimingObj}";

在JavaScript中使用Qualtrics管道文本时,必须将管道文本括在引号中。

如果管道文本是您计划使用和操作的数字,正如我所假设的那样,您应该使用parseInt()来确保您不会遇到问题:

var timingObj = parseInt("${e://Field/TimingObj}");

由于完整的代码清楚地表明您传入的项目是一个对象,我假设它是以有效的JSON传递的,您应该解析它:

var timingObj = JSON.parse("${e://Field/TimingObj}");