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
相关产品推荐
相关产品推荐

