所以我是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(){
});
答案 0 :(得分:1)
这应该是一个简单的解决方法:
尝试:
var timingObj = "${e://Field/TimingObj}";
在JavaScript中使用Qualtrics管道文本时,必须将管道文本括在引号中。
如果管道文本是您计划使用和操作的数字,正如我所假设的那样,您应该使用parseInt()来确保您不会遇到问题:
var timingObj = parseInt("${e://Field/TimingObj}");
由于完整的代码清楚地表明您传入的项目是一个对象,我假设它是以有效的JSON传递的,您应该解析它:
var timingObj = JSON.parse("${e://Field/TimingObj}");