为什么它不能是“如果为null,等到不为空”而不是另一种方式

时间:2012-11-28 15:54:19

标签: actionscript-3 flash

我希望能够检查数组中的空条目,如果它们是空条目,则打印一条消息。

然后,如果没有,我想继续该计划。

我真的看不出我做错了什么。

var mainArray:Array = new Array (6);

function addNumbers(event:MouseEvent):void
{

    userNumber1.selectable = false;
    userNumber1.type = TextFieldType.DYNAMIC;
    userNumber2.selectable = false;
    userNumber2.type = TextFieldType.DYNAMIC;
    userNumber3.selectable = false;
    userNumber3.type = TextFieldType.DYNAMIC;
    userNumber4.selectable = false;
    userNumber4.type = TextFieldType.DYNAMIC;
    userNumber5.selectable = false;
    userNumber5.type = TextFieldType.DYNAMIC;
    userNumber6.selectable = false;
    userNumber6.type = TextFieldType.DYNAMIC;


    mainArray[0] = Number(userNumber1.text);
    mainArray[1] = Number(userNumber2.text);
    mainArray[2] = Number(userNumber3.text);
    mainArray[3] = Number(userNumber4.text);
    mainArray[4] = Number(userNumber5.text);
    mainArray[5] = Number(userNumber6.text);

    noNull();
}

    function noNull()
    {
        var e;
        var noNulls:Boolean = new Boolean();
        noNulls = false;
        for (e = 0; e < 6; e++)
        {
            if (mainArray[e] == null)
            {
                genericText.text = "Make sure all boxes are filled!";
            }
            else
            {
                noNulls = true;
            }

        }

        if (noNulls == true)
        {
            duplicateCheck();
        }

    }

3 个答案:

答案 0 :(得分:2)

    noNulls = true;
    for (e = 0; e < 6; e++)
    {
        if (mainArray[e] == 0)
        {
            genericText.text = "Make sure all boxes are filled!";
            noNulls = false;
            break;
        }
    }

答案 1 :(得分:1)

如果我们不在TextField中输入任何值,那么“text”属性将为空字符串,而不是NULL。

答案 2 :(得分:1)

可能是因为将空字符串(如果文本字段为空)转换为数字给出“0”并将数字“0”组合成null给出false:

 var arr:Array = [];
 arr[0] = Number("");
 trace(arr[0] == null); //false

如果键入变量,则无法将Number与null进行比较:

var x:Number = Number("");
trace(x == null);   //gives a compile error

回答你的评论;您应该在设置警告文本后暂停:

genericText.text = "Make sure all boxes are filled!";
break;

否则,如果正确填充了下一个文本字段,它将再次覆盖noNulls值并返回false。此外,无论如何都不需要检查其余的字段,因为一个字段已经无效。