我已经有一个验证,可以通过前缀检查电话号码。
但是,当我调用该功能时,第二个循环中的某些东西似乎失败了。
我怀疑与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];
这是因为PrefixHolder
和PrefixHolder2
都是undefined
(您 evelare 他们,但您永远不会初始化它们),并且尝试访问undefined
的属性是错误。
此外,这对我来说似乎是不必要的并发症。是否有一个特殊的原因,您不仅将它们完全遗漏,然后进行检查:
if(number.charAt(1) == position[0] && number.charAt(2) == position[1])
?