1

我有一个用于 Qualtrics 的 Javascript 代码,它在 Firefox/Chrome/Safari 中运行良好,但在 Internet Explorer 中运行良好。

代码的目的是将第 1 个问题(项目的排名)的 ANSWER 转移到第 2 个问题中的文本(项目列表)中(因此,一个人对第 1 个问题中的项目进行排名的顺序就是顺序它们出现在第二个问题的文本中)。我将在下面发布我使用的代码。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);

}); 

第二个问题中使用的代码:

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]});
}


}); 
4

0 回答 0