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