我正在以质量方式创建一项调查。我创建了一个块并使用了循环和合并。在每次迭代中,将加载一个图像并使用javascript显示。第一张图像正确显示。但是从第二次迭代开始,图像开始消失。可以看出图像已加载,因为我只能在加载问题时看到它们,但随后图像消失。
如何解决此问题?我做错了什么?
以下是我的代码:
Qualtrics.SurveyEngine.addOnload(function()
{
var count = Number("${e://Field/count}");
var dirs = ["sensitive-text", "sensitive-notext", "nonsensitive-text", "nonsensitive-notext"]
var seq = "${e://Field/sequence}";
curStr = seq.split(",")[count]
cur = Number(curStr)
dir = dirs[0];
if (cur >= 100 && cur<200)
{
dir = dirs[1];
}
else if (cur >= 200 && cur < 300)
{
dir = dirs[2];
}
else if (cur>=300 )
{
dir = dirs[3];
}
path = "https://juhu.soic.indiana.edu/rakhasan/picshare/" + dir+"/"+curStr+".jpg";
var img = document.getElementById("img");
img.src=path;
img.style.display = 'block'
img.style.height = '1000px'
img.style.width="700px"
Qualtrics.SurveyEngine.setEmbeddedData("count", count+1) ;
});
Seq
是一个嵌入式数据字段,每个试验都会随机化。
答案 0 :(得分:2)
经过一些测试后,似乎将页面转换设置为无将解决您遇到的问题。如果您已设置转换,则替代解决方案是将所有添加的代码放在setTimeout块中。问题是上一页的id =&#39; img&#39;当第二页的代码运行时,元素将被加载。这是由于在新页面加载时加载上一页的过渡效果引起的。
以下是适用的更新代码:
Qualtrics.SurveyEngine.addOnload(function () {
setTimeout(function () {
var count = Number("${e://Field/count}");
var dirs = ["sensitive-text", "sensitive-notext", "nonsensitive-text", "nonsensitive-notext"]
var seq = "${e://Field/sequence}";
curStr = seq.split(",")[count]
cur = Number(curStr)
dir = dirs[0];
if (cur >= 100 && cur < 200) {
dir = dirs[1];
} else if (cur >= 200 && cur < 300) {
dir = dirs[2];
} else if (cur >= 300) {
dir = dirs[3];
}
path = "https://juhu.soic.indiana.edu/rakhasan/picshare/" + dir + "/" + curStr + ".jpg";
var img = document.getElementById("img");
img.src = path;
img.style.display = 'block'
img.style.height = '1000px'
img.style.width = "700px"
Qualtrics.SurveyEngine.setEmbeddedData("count", count + 1);
}, 500);
});
&#13;