Qualtrics:将问题导入新调查时,自定义JavaScript停止工作

Qualtrics:将问题导入新调查时,自定义JavaScript停止工作,javascript,qualtrics,Javascript,Qualtrics,我有一个包含几个问题的自定义JavaScript,可以启用带有两个滑块旋钮的滑块。我可以复制调查,也可以将调查导出为.qsf文件并重新导入。在这两种情况下,我都得到了一个新的工作调查 但是,使用“从导入问题”将调查问题导入到现有调查。。。功能不起作用;在这种情况下,JavaScript无法工作。有没有一种方法可以在保留JavaScript的同时将这些问题导入到现有的调查中 第一个最相关问题中使用的代码: Qualtrics.SurveyEngine.addOnload(function() {

我有一个包含几个问题的自定义JavaScript,可以启用带有两个滑块旋钮的滑块。我可以复制调查,也可以将调查导出为.qsf文件并重新导入。在这两种情况下,我都得到了一个新的工作调查

但是,使用“从导入问题”将调查问题导入到现有调查。。。功能不起作用;在这种情况下,JavaScript无法工作。有没有一种方法可以在保留JavaScript的同时将这些问题导入到现有的调查中

第一个最相关问题中使用的代码:

Qualtrics.SurveyEngine.addOnload(function()
{

    document.getElementById("QR~QID7").setAttribute("readonly", "readonly");
    document.getElementById("QR~QID8").setAttribute("readonly", "readonly");
    var surface;
    var cnst = 4;
    // Sets the sliders parameters and starting values
     $("#research-slider").slider({ id: "research-slider", min: 0, max: 10, range: true, value: [0, 10]});
     // variable to store in surface area when user has stopped sliding
     var surface, currentResponse;
     $("#research-slider").on("slideStop", function(slideEvt) {
         surface = slideEvt.value;
         document.getElementById("minimum").innerHTML  = surface[0];
         document.getElementById("maximum").innerHTML  = surface[1];
         document.getElementById("newValue").innerHTML  = (surface[1]- surface[0])/cnst ;
         document.getElementById("QR~QID7").value  = surface[0];
         document.getElementById("QR~QID8").value  = surface[1];
     });



     $('NextButton').onclick = function (event) {       
        // and now run the event that the normal next button is supposed to do
        Qualtrics.SurveyEngine.navClick(event, 'NextButton')
    }

})

您的JavaScript在导入时无法工作,因为您使用的是固定的QID代码QID7和QID8。解决方案是编写代码,通过遍历DOM找到正确的元素。最简单的方法是使用prototypejs而不是本机JavaScript

假设最小QID7和最大QID8紧跟在代码附加到的问题之后,那么它将类似于:

var qid = this.questionId;
var min = $(qid).next('.QuestionOuter').down('.InputText');
var max = $(qid).next('.QuestionOuter',1).down('.InputText');
min.setAttribute("readonly", "readonly");
max.setAttribute("readonly", "readonly");
var surface;
var cnst = 4;
// Sets the sliders parameters and starting values
 $("#research-slider").slider({ id: "research-slider", min: 0, max: 10, range: true, value: [0, 10]});
 // variable to store in surface area when user has stopped sliding
 var surface, currentResponse;
 $("#research-slider").on("slideStop", function(slideEvt) {
     surface = slideEvt.value;
     $("minimum").innerHTML  = surface[0];
     $("maximum").innerHTML  = surface[1];
     $("newValue").innerHTML  = (surface[1]- surface[0])/cnst ;
     min.value  = surface[0];
     max.value  = surface[1];
 });

谢谢,这的确是正确的。我没有自己编写代码,因此没有意识到问题ID是硬编码的。