我有一个Qualtrics的Javascript代码,可以在Firefox / Chrome / Safari中正常运行,但不适用于Internet Explorer。
代码的目的是将第一个问题的答案(项目的排名)转移到第二个问题中的文本(项目列表)(因此,一个人在第一个问题中对项目进行排序的顺序)是他们出现在第二个问题的文本中的顺序)。我将发布我在下面使用的代码。 Internet Explorer中的当前问题是第二个问题根本没有显示任何项目。
我对Javascript编码不是很熟练,所以我很感激任何帮助,了解我可以包含的代码或更改以使其与IE不兼容? (不会丢失其他浏览器的功能)。
第一个问题中使用的代码:
Qualtrics.SurveyEngine.addOnload(function()
{
/*Place Your Javascript Below This Line*/
var QID = this.questionId;
var itemsSet = false;
var curryNextButtonEvent = function(f) {
return function(event) {
if (itemsSet === false) {
//Get items and rank
inputs = $$('#' + QID +' .ChoiceStructure input');
mapping = {};
for(i = 0; i < inputs.length; i += 1) {
val = inputs[i].value === '' ? i : inputs[i].value-1;
mapping[val] = i;
}
mapping.count = inputs.length;
console.log(Object.toJSON(mapping));
Qualtrics.SurveyEngine.setEmbeddedData('QRankedOrder',Object.toJSON(mapping));
itemsSet = true;
}
f(event);
}
}
var nextbutton = $('NextButton');
nextbutton.onclick = curryNextButtonEvent(nextbutton.onclick);
nextbutton.onkeypress = curryNextButtonEvent(nextbutton.onkeypress);
});
第2个问题中使用的代码:
Qualtrics.SurveyEngine.addOnload(function()
{
//get mapping
try {
mapping = '${e://Field/QRankedOrder}'.evalJSON();
} catch(e) {
console.log('couldn\'t sort',e);
return;
}
//get all elements
eles = $$('.ChoiceStructure li');
parent = eles[0].up();
newOrder = [];
//Make new order of elements
for(i = 0; i < mapping.count; i +=1 ) {
ele = eles[mapping[i]];
ele.remove();
newOrder[i] = ele;
}
//set new order of elements
for(i = mapping.count -1; i >= 0; i-=1) {
if( i % 2 == 1) {
newOrder[i].addClassName('ReadableAlt');
} else {
newOrder[i].removeClassName('ReadableAlt');
}
parent.insert({top: newOrder[i]});
}
});