javascript null值无效

时间:2011-11-04 02:37:49

标签: javascript asp.net null

这是我检查邮政编码的功能。当一个空值进来时,我不断得到“需要对象”有谁知道我哪里出错?

aspx标签 -

asp:CustomValidator 
    ID="cv_zipcode" 
    runat="server"      
    ControlToValidate="tb_zipcode"
    ClientValidationFunction="ValidateZipcode" 
    ValidateEmptyText="true" 
    Display="Dynamic" 
    ValidationGroup="vgroup">
</asp:CustomValidator>

function ValidateZipcode(sender, args) {
              var regZipcode = '\d{5}'
        var zipcode = document.getElementById(sender.id.replace(/cv_/, "tb_"));
                    if ((zipcode.value == "ZipCode") || (zipcode.value.length == null) || (zipcode.value.length == "")) {
            zipcode.style.backgroundColor = "#f6e086";
            args.IsValid = false; return;
        } else {
            args.IsValid = true;
            zipcode.style.backgroundColor = "white";
        }
    }

4 个答案:

答案 0 :(得分:1)

我不确定哪个值确实为null,但一般来说,如果你有一个变量x,它可能是null,也可能不是null,并且你想用x做一些事情,你可以这样做:

x != null && do_something_with(x)

如果x == null,则返回false并且不尝试执行do_something_with()。否则,此表达式返回值do_something_with(x)

如果您只是do_something_with(x),并且x为空,并且do_something_with()不期望为空,则可能会出错。

修改

尝试:

if ((zipcode == null) || (zipcode.value == null) || [everything else])

答案 1 :(得分:0)

zipcode.value.length返回一个整数

我认为你应该

if ((zipcode.value == "ZipCode") || (zipcode.value.length == 0))

答案 2 :(得分:0)

我对这一行有点怀疑:

if ((zipcode.value == "ZipCode") || (zipcode.value.length == null) || (zipcode.value.length == "")) {

请改为尝试:

if ((zipCode.value == null) || (zipcode.value== "") || (zipcode.value.length == 0)) {

答案 3 :(得分:0)

该错误消息通常表示您已尝试获取或设置属性或调用非对象的方法,当您认为引用对象的变量为null时,往往会发生这种情况。未定义。也就是说,如果someVariable为空或未定义,则您不能说someVariable.someProperty

如果.getElementById()找不到匹配的元素,则返回null,所以在这一行中:

var zipcode = document.getElementById(sender.id.replace(/cv_/, "tb_"));

zipcode可能设置为null,如果是,则所有尝试访问zipcodezipcode.valuezipcode.style属性的尝试都将失败。

如果参数args为空或未定义,则尝试设置args.IsValid将失败,类似地,如果参数sender为空或未定义,则sender.id将失败。

所以,如果你有一个可能为null的变量,你应该在尝试用它做任何其他事情之前测试它。