1

我正在使用创建在线调查的 Confirmit 平台。这是一个导致运行时错误“需要对象”的脚本节点,如果您能帮我修复它,我将不胜感激。它应该检查问题 q2b 和 q3a 中的某些代码是否为 1 或 2(问题是用函数 f() - f(question id)[code]) 引用 - '//skip ?' 部分。然后它将最多四个代码重新编码为另一个问题(h_q4)以供进一步使用。

var flag1 : boolean = false;
var flag2 : boolean = false;

//null
for(var i: int=0; i <9; i++)
{
    var code = i+1;
    f("h_q4")[code].set(null);
}
f("h_q4")['95'].set(null);

//skip ?
for(var k: int=1; k <16; k+=2)
{
    var code = k;
    if(f("q2b")[code].none("1", "2"))
        flag1;
    else
    {
        flag1 = 0;
        break;
    }
}

if(f("q3a")['1'].none("1", "2"))
flag2;

if(flag1 && flag2)
f("h_q4")['95'].set("1");
//recode 
else 
{
    var fromForm = f("q2b"); 
    var toForm = f("h_q4"); 
    const numberOfItems : int = 4; 
    var available = new Set(); 
    if(!flag1)
    {
        for( i = 1; i < 16; i+=2)
        {
            var code = i;

            if(f("q2b")[i].any("1", "2"))
            available.add(i); 
        }
    }
    if(!flag2)
    {
        available.add("9");
    }
    var selected = new Set(); 
    if(available.size() <= numberOfItems) 
    { 
        selected = available; 
    } 
    else 
    { 
        while(selected.size() < numberOfItems) 
        {
            var codes = available.members();
            var randomNumber : float = Math.random()*codes.length;
            var randomIndex : int = Math.floor(randomNumber);
            var selectedCode = codes[randomIndex];
            available.remove(selectedCode);
            selected.add(selectedCode); 
        }
    } 
    var codes = fromForm.domainValues();
    for(var i = 0;i<codes.length;i++) 
    {
        var code = codes[i]; 
        if(selected.inc(code)) 
        { 
            toForm[code].set("1"); 
        }
        else
        { 
            toForm[code].set("0"); 
        } 
    }
}

代码的第一部分 (//null) 清空 'recepient' 问题以简化测试
.set()、.get()、.any()、.none() 都是有效的

4

0 回答 0