You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Qualtrics矩阵问题取值时触发TypeError错误求助

Qualtrics矩阵问题取值时触发TypeError错误求助

我来帮你分析下这个问题~你碰到的TypeError: Cannot read properties of null (reading 'val')错误,本质是代码找不到要获取值的DOM元素,调用.val()时才会报错。大概率是手动构造的DOM选择器不对,或者代码触发时机有问题,下面给你两个靠谱的修复方案:

方案一:使用Qualtrics官方API获取数据(优先推荐)

直接操作DOM很容易因为Qualtrics页面结构更新而失效,用官方提供的SurveyEngine API获取答案会稳定很多。你可以把代码改成这样:

Qualtrics.SurveyEngine.addOnPageSubmit(function() {
    var partyNames = [
        "Party A", "Party B", "Party C", "Party D", "Party E", "Party F", "Party G"
    ];
    var ratings = [];
    // 获取当前矩阵题的所有响应数据
    var questionResponses = this.getQuestionData().responses;
    
    // 遍历每个政党对应的选项(矩阵题的行索引从1开始)
    for(var i = 0; i < partyNames.length; i++) {
        var rowId = (i + 1).toString();
        var rating = parseInt(questionResponses[rowId]);
        // 避免无效值影响后续排序
        if(!isNaN(rating)) {
            ratings.push({ party: partyNames[i], rating: rating });
        }
    }

    // 按评分降序排序
    ratings.sort(function(a, b) {
        return b.rating - a.rating;
    });

    // 把排序后的政党存入嵌入式数据
    for(var j = 0; j < ratings.length; j++) {
        Qualtrics.SurveyEngine.setEmbeddedData("SortedParty_" + (j + 1), ratings[j].party);
    }
});

改动说明:

  • 把addOnUnload换成addOnPageSubmit:确保在页面提交时获取数据,此时问题元素还未被销毁,API调用更可靠
  • 用this.getQuestionData().responses直接获取矩阵题的所有答案:不用再手动猜测DOM元素的ID/name,完全适配Qualtrics的内部结构
  • 增加isNaN检查:防止获取到无效的评分值,避免后续排序逻辑出问题

方案二:修正DOM选择器(适合坚持用原生DOM操作的场景)

如果你还是想用jQuery获取元素,得用正确的选择器。Qualtrics矩阵题的每个选项输入框的name属性格式是QR~QIDxx~行号,可以修改代码里的取值部分:

// 替换原来的Capture Ratings部分代码
for (var i = 0; i < partyNames.length; i++) {
    // 通过name属性定位输入框
    var ratingInput = $('input[name="QR~QID22~' + (i+1) + '"]');
    // 先检查元素是否存在再取值
    if(ratingInput.length > 0) {
        var rating = parseInt(ratingInput.val());
        ratings.push({ party: partyNames[i], rating: rating });
    }
}

同样建议把addOnUnload换成addOnPageSubmit,避免页面卸载时元素已被移除导致的问题。

备注:内容来源于stack exchange,提问作者Will

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.13 20:19:33