Javascript 异常JS代码段

Javascript 异常JS代码段,javascript,qualtrics,Javascript,Qualtrics,所以我完全是一个JS新手,但我让人编写了一些代码,用于Qualtics调查。该代码现在已被破坏,我正在尝试修复它,此行有一个错误: var timingObj=${e://Field/TimingObj}; 我希望有人能帮我解释一下这句话,这样我就可以把它修好。(我必须编写完整的代码,但这似乎有点长,需要有人来完成。)我知道第一部分是将名为timingobj的变量设置为某个值 这让我很困惑,尤其是“/”我理解为表示注释而不是代码。这段代码在过去很有效,但现在给了我一个错误。任何有助于理解我所从

所以我完全是一个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(){

});

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

尝试:

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

如果管道文本是一个您计划使用和处理的数字(如我所假设的),则应使用parseInt()确保没有问题:

var timingObj = parseInt("${e://Field/TimingObj}");
由于完整的代码清楚地表明您要传递的项是一个对象,因此我假设它是以有效的JSON传递的,您应该这样解析它:

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

错误是什么?看起来像是一个模板文字:这一定是某种模板,因为它不是有效的JavaScript…看起来像一个模板引擎。您确定JavaScript在发送到浏览器(即Freemarker)之前没有被其他人解析吗?我添加了一个Qualtrics标记,假设您的问题有输入错误。我尝试了parseInt解决方案,虽然这确实修复了错误,但代码工作不正常。它没有跟踪时间,也没有按应有的方式计数。但是谢谢你的投入!如果你用更完整的代码更新帖子,我会很乐意帮你看看。我已经更新了我收到的代码。它可以处理一些嵌入的数据和弹出窗口,我已经将它们放入Qualtrics中。我感谢您的帮助。我更新了我的答案,我认为从一开始就应该是您的用例。您传递的不是一个数字,而是一个对象。如果你不介意给我发一个${e://Field/TimingObj}的例子的话,我可以确认这一点。TimingObj是为这个案例而构建的嵌入变量项,即F_pfu_时间、F_PF_计数、F_ES_时间F_ES_计数,这些会在调查中的弹出窗口中激活,因此当用户单击该弹出窗口时,这些会被记录下来。
var timingObj = JSON.parse("${e://Field/TimingObj}");