电话号码前缀验证 / JavaScript的麻烦



我已经有一个验证,可以通过前缀检查电话号码。
但是,当我调用该功能时,第二个循环中的某些东西似乎失败了。
我怀疑与otherPrefix有关。

这是我的代码:

function PhoneN(Phone)
{
    var number = document.getElementById(Phone).value;
    var zero = 0;
    var prefix = ["0", "2", "3", "4", "8", "9"];
    var otherPrefix = ["|", "7|7", "7|3", "7|4", "7|2", "7|8"];
    var boolian = false;
    var PrefixHolder;
    var PrefixHolder2;
    if(number.charAt(0) == zero)
    {
        for(var i = 1; i < prefix.length; i++)
        {
            if(prefix[i] == number.charAt(1))
                boolian = true;
        }
    }
    if(number.charAt(0) == zero)
    {
        for(var cut in otherPrefix)
        {
            var position = otherPrefix[cut].split("|");
            PrefixHolder.value = position[0];
            PrefixHolder2.value = position[1];
            if(number.charAt(1) == PrefixHolder.value && number.charAt(2) == PrefixHolder2.value)
                boolian = true;
        }
        if(boolian == false)
            alert("The Prefix number is invalid");
    }
}

如果您的代码没有较早失败,则最新的代码会失败:

PrefixHolder.value = position[0];
PrefixHolder2.value = position[1];

这是因为PrefixHolderPrefixHolder2都是undefined(您 evelare 他们,但您永远不会初始化它们),并且尝试访问undefined的属性是错误。

此外,这对我来说似乎是不必要的并发症。是否有一个特殊的原因,您不仅将它们完全遗漏,然后进行检查:

if(number.charAt(1) == position[0] && number.charAt(2) == position[1])

最新更新