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

SurveyJS:completedBeforeHTML中correctAnswers变量显示异常(始终为0)

SurveyJS completedBeforeHTML中correctAnswers显示0的解决办法

问题核心在于completedBeforeHTML的渲染时机——它是在问卷提交流程启动但还没完成得分计算时触发的,这时候内置的correctAnswers变量还没被正确赋值,所以显示默认的0;而completedHTML是所有后台计算完成后才渲染,因此能拿到正确数值。

解决思路是手动计算答对题数,再替换到completedBeforeHTML内容里:

  • 监听survey的onCompleting事件,这个事件在提交流程中、最终完成前触发,刚好适合提前计算得分
  • 遍历所有题目,调用isAnswerCorrect()方法判断是否答对,统计总数
  • 把统计结果直接替换到completedBeforeHTML的文本中

示例代码:

survey.onCompleting.add((sender, options) => {
  let correctCount = 0;
  // 遍历所有题目,可根据实际题型调整判断逻辑
  sender.getAllQuestions().forEach(question => {
    // 这里以单选、多选题为例,其他题型可自行扩展
    if (['radiogroup', 'checkbox'].includes(question.getType())) {
      if (question.isAnswerCorrect()) {
        correctCount++;
      }
    }
  });
  // 替换自定义文本
  sender.completedBeforeHtml = `Thank you for running the quiz. You had ${correctCount} correct answers.`;
});

这样就能在completedBeforeHTML里显示实际的答对题数了,不用依赖还未计算完成的内置变量。

内容的提问来源于stack exchange,提问作者Jakob Hansen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 14:35:54