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

如何在SurveyJS中限制问卷每页显示的问题数量

当然可以!SurveyJS完全支持按指定数量把问卷拆分成多个页面,我给你分享两种实用的实现方式:

方法1:手动创建页面分组(适合自定义分组)

如果你希望灵活控制页面内的问题组合(比如把相关问题放在同一页),可以直接在问卷的JSON结构里手动拆分:

{
  "pages": [
    {
      "name": "page1",
      "elements": [
        { "type": "text", "name": "q1", "title": "问题1" },
        { "type": "text", "name": "q2", "title": "问题2" },
        { "type": "text", "name": "q3", "title": "问题3" },
        { "type": "text", "name": "q4", "title": "问题4" },
        { "type": "text", "name": "q5", "title": "问题5" }
      ]
    },
    {
      "name": "page2",
      "elements": [
        { "type": "text", "name": "q6", "title": "问题6" },
        { "type": "text", "name": "q7", "title": "问题7" },
        { "type": "text", "name": "q8", "title": "问题8" },
        { "type": "text", "name": "q9", "title": "问题9" },
        { "type": "text", "name": "q10", "title": "问题10" }
      ]
    },
    // 继续创建page3、page4,每个包含剩余的5个问题
  ]
}

这种方式直观可控,适合需要调整页面内容逻辑的场景。

方法2:通过API自动分页(适合批量/动态问题)

如果你的问题是动态生成的,或者不想手动逐个分组,可以用代码自动拆分:

// 假设这是你包含20个问题的原始数组
const allQuestions = [
  { "type": "text", "name": "q1", "title": "问题1" },
  { "type": "text", "name": "q2", "title": "问题2" },
  // ... 这里补充剩下的18个问题
];

// 设置每页显示的问题数量
const pageSize = 5;
const pages = [];

// 循环拆分问题数组为多个页面
for (let i = 0; i < allQuestions.length; i += pageSize) {
  const currentPageQuestions = allQuestions.slice(i, i + pageSize);
  pages.push({
    name: `page${Math.floor(i / pageSize) + 1}`,
    elements: currentPageQuestions
  });
}

// 初始化SurveyJS问卷
const survey = new Survey.Model({ pages: pages });

运行这段代码后,20个问题会被自动分成4页,每页恰好5个。

另外,如果你用的是SurveyJS Creator可视化编辑器,也可以手动添加页面,然后将问题拖拽到对应页面中;或者选中问题后,在右侧设置面板里勾选“开始新页面”来手动分页,不过批量处理的话还是代码方式更高效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:13:14