变量的使用

Update time:2025-06-06 18:57:34

    系统的很多地方都可以使用变量:

    • 富文本框:富文本框问卷编辑器中获得输入光标后边框会变成紫色的输入框,可以插入变量。插入后的变量会以不同颜色的标签显示出来,以区别普通的输入内容。
    • 选项引用:在选项引用弹出的变量面板中选择变量。
    • 图片选择器:图片选择器中能使用图片变量。

    获得光标后,边框变成蓝色的输入框是普通输入框,不能插入变量。

    变量选择器

    使用变量需要用到变量选择器,在富文本框中输入@符号,

    或者点击选项引用按钮,都会弹出变量选择器。顶部的筛选输入框中输入关键字,可以对变量进行筛选。

    变量选择器会列出当前位置可以使用的所有变量。变量选择器会按以下顺序依次显示:

    • 系统变量分组:包含所有系统变量,系统变量说明参见系统变量

    • 显式变量分组:按变量类型分类,把问卷的显式变量分到多个显式变量分组中,每一组中都会包含变量面板中添加过的对应类型的变量。

    • 所有节点的隐式变量分组:节点名列表中的每个节点都能输出一堆变量,这些变量就是隐式变量,具体说明参见隐式变量

    列表项目前面带颜色的小点代表这个变量的类型,不同颜色标记对应不同的变量类型。鼠标覆盖在某个项目组上面,会列出该项目组下面的变量子集列表,如果某个变量子集又包含更多的变量,则鼠标覆盖在该子集上又能看到里面的下级变量列表。

    项目名称右侧带>符号的项目表示其内部包含更多的变量。

    在富文本框中使用变量

    在富文本框中输入@符,弹出变量选择器面板。

    点击某个变量项目,这个变量就会被插入当前富文本框,在问题文字、选项文字等富文本输入框中插入变量,答题过程中变量会被解析成真实的值。

    例如,可以在问题文字中插入系统变量/基本/问卷 id,在完整预览中可以看到这个变量被解析成当前问卷的问卷 ID;可以在问题文字中插入从之前某个选择题中提取的变量MULTIPLE_CHOICE/全部选项/选项数量,在完整预览中可以看到,当在这道题目选中某些选项后,后面题目中这个变量的值会解析为之前题目中选中选项的数量。

    除了可以插入到问题内容中,很多用于控制题目特性的属性也可以插入变量,如多选题的最大数和最小数、允许输入字符最大数等控制条件。当这些地方使用了变量时,会先把控制条件解析出具体的值,然后再对这些值再进行验证。

    数值拨动控件

    数值拨动控件是系统的特殊的数值设定控件,在某些条件下,会切换为富文本框形式接收变量。数值拨动控件控件的右侧会有个小按钮,点击按钮切换输入模式,支持以下模式:

    • 小按钮上显示N:数值输入模式,直接输入数值;
    • 小按钮上显示V:变量输入模式,数值输入框会切换成富文本框,然后用在富文本框中插入变量的方式输入变量。

    例如,开启选择题的多选控制,会看到设置最大和最少数值的输入框就是数值拨动控件

    在控件输入框的右边,会有 2 个上下箭头的按钮,点击按钮或者在输入框内按键盘的上下方向键,以递增、递减的方式修改输入框内的数值。如果同时辅以按住ShiftAlt键,递增递减的幅度会发生变化。

    在选项引用中使用

    节点除了可以添加选项外,还可以通过变量从之前的节点引用选项,把之前题目的全部或部分选项内容拿过来当成自己的选项,这个行为叫做选项引用

    点击选项引用按钮,在弹出的变量选择器中选择某个变量后,会在右侧编辑栏的选项设置面板中生成一个选项引用设置项。每个设置项会生成对应的引用选项,点击选项引用配置项右侧的小箭头按钮,打开面板查看生成了多少引用选项,且可以分别设定这些引用选项附加设置。可以添加多个选项引用设置项。

    生成选项时可以引用任何变量。

    变量附加设置

    对于富文本框中插入的变量标签和选项引用配置项,点击变量之后会弹出变量过滤器,可以对变量的使用增加一些额外的设置。

    具体的设置规则参照变量过滤器

    变量限制规则

    可以使用变量的地方,并不能使用所有变量,系统会按照规则筛选出可使用的变量。

    如果存在某个变量,但是变量选择器中却找不到该变量,查看下列规则说明,确定是否满足引用限制规则:

    • 节点中,只能引用当前节点之前节点中的隐式变量,不能引用当前节点之后的;
    • 如果某个显式变量中引用了某个节点的隐式变量,则这个节点之前的节点不能引用这个显式变量;
    • 媒体变量只能在支持展示媒体的地方引用;
    • HTML 变量只能在支持展示 HTML 效果的地方引用;
    • 如果某个变量出现错误,则不能被引用;

    解析空值

    如果引用了变量,但是在运行时,这个变量解析不到值,就会解析出一个默认的空值' '。