Estou tentando escrever uma pesquisa que fornecerá vinhetas experimentais aos participantes com base em classificações anteriores de partidos políticos. Obviamente, isso significa que precisarei canalizar resultados de perguntas anteriores para uma nova pergunta. Tentei fazer isso com uma tabela de matriz, mas isso levou ao seguinte erro:
SE API Error: TypeError: Cannot read properties of null (reading 'val')
at A.i.eval (eval at <anonymous> (jfeLib.fa2484b7040929bdf0ac.min.js:2:125561), <anonymous>:25:56)
at A.i.<anonymous> (jsApi.8c8dd06a862b12e2d92e.min.js:1:5034)
at A.i.r (jfeLib.fa2484b7040929bdf0ac.min.js:2:29148)
at A.i.s (jfeLib.fa2484b7040929bdf0ac.min.js:2:29191)
at s (jfeLib.fa2484b7040929bdf0ac.min.js:2:28405)
at A.i._trigger (jfeLib.fa2484b7040929bdf0ac.min.js:2:30008)
at A.i.r [as _trigger] (jfe.e7b329a67c066949aeb4.min.js:2:368934)
at A.i._finishRenderAndTriggerReady (jfe.e7b329a67c066949aeb4.min.js:2:283139)
at A.i.r [as _finishRenderAndTriggerReady] (jfe.e7b329a67c066949aeb4.min.js:2:368934)
at A.i.__postRender (jfe.e7b329a67c066949aeb4.min.js:2:263578) ƒ () { var matrixQuestionID = "QR~QID22~";
var partyNames = [
"Party A", "Party B", "Party C", "Party D", "Party E", "Party F", "Party G"
];
var ratings = [];
Para referência, este é o código que escrevi na tabela de matriz JavaScript: Qualtrics.SurveyEngine.addOnUnload(function()
Qualtrics.SurveyEngine.addOnUnload(function()
{
var matrixQuestionID = "QR~QID22~";
var partyNames = [
"Party A", "Party B", "Party C", "Party D", "Party E", "Party F", "Party G"
];
var ratings = [];
// Capture Ratings
for (var i = 0; i < partyNames.length; i++) {
var rating = parseInt($(matrixQuestionID+(i+1)).val());
ratings.push({ party: partyNames[i], rating: rating });
}
// Sort ratings
ratings.sort(function(a, b) {
return b.rating - a.rating;
});
// Store ordered parties
for (var j = 0; j < ratings.length; j++) {
Qualtrics.SurveyEngine.setEmbeddedData("SortedParty_" + (j + 1), ratings[j].party);
}
});
Tenho certeza de que é devido ao nome da pergunta, mas não consigo descobrir como consertar (tentei QID22, QR~QID22~ (para corresponder ao nome HTML) e o nome que dei no Qualtrics, partyRank). Qualquer ajuda seria ótima!
Você está encontrando este erro: Erro de API SE: TypeError: Não é possível ler propriedades de nulo (lendo 'val')
O problema vem desta linha no seu código: var rating = parseInt($(matrixQuestionID+(i+1)).val());
Isso significa que você está tentando acessar um elemento DOM que não existe — $(...) retorna nulo, e .val() em nulo gera o erro.
Por que isso está acontecendo Você está construindo um ID de elemento como: "QR~QID22~" + (i+1)
Mas as perguntas da matriz Qualtrics não têm elementos DOM individuais com IDs como esse para cada célula. É por isso que sua chamada $() falha.
Abordagem correta Em vez de tentar acessar células de matriz usando IDs DOM, use métodos de API JavaScript integrados do Qualtrics como:
getChoiceAnswerValue(rowID) getSelectedChoices() Veja como você pode reescrever seu código usando getChoiceAnswerValue, que funciona bem para perguntas de matriz (resposta única):
Exemplo de JavaScript funcional Coloque este código dentro do JavaScript da pergunta da matriz (use Adicionar JavaScript):
Qualtrics.SurveyEngine.addOnload(função() { var q = isto;
});
Dicas adicionais Use addOnload em vez de addOnUnload. onUnload pode não ser confiável porque a página pode estar navegando para longe quando o script é executado. Evite codificar QID, se possível. Você pode usar this.questionId para referenciar a pergunta atual dinamicamente. Se estiver usando rótulos de coluna como valores numéricos (por exemplo, 1–7), certifique-se de que sua escala de classificação na pergunta da matriz esteja configurada adequadamente.