想知道错误是如何出现在IE中的 可以修改吗? 3Q。
Function
input: 192.2.09.001
output: 192.2.9.1
ERROR@IE
input: 192.2.09.001
output: undefinedundefinedundefined.undefined.undefinedundefined.undefinedundefinedundefined
Code:
ip_normalize(ip)
function remove_0(input)
{
var i;
var output_string="";
var tag=0;
for (i=0; i< input.length ; i++)
{
if(i==input.length-1 || tag==1)
{
output_string+= input[i];
}
else
{
if(input[i]!='0')
{
output_string+= input[i];
tag=1;
}
}
}
return output_string;
}
function ip_normalize(ip)
{
var ip_s = ip.split('.');
var ip_n = "";
var ip1="",ip2="",ip3="",ip4="";
if(ip_s.length!=4)
return ip;
ip1 = remove_0(ip_s[0]);
ip2 = remove_0(ip_s[1]);
ip3 = remove_0(ip_s[2]);
ip4 = remove_0(ip_s[3]);
ip_n = ip1 + '.' + ip2 + '.' + ip3 + '.' + ip4;
return ip_n;
}
答案 0 :(得分:2)
你不能简单地使用:
function ip_normalize(ip)
{
var ip_s = ip.split('.', 4);
if (ip_s.length != 4) return ip;
return parseInt(ip_s[0], 10) + "." +
parseInt(ip_s[1], 10) + "." +
parseInt(ip_s[2], 10) + "." +
parseInt(ip_s[3], 10);
}
答案 1 :(得分:1)
function normalizeIPv4(str) {
var ipA=str.match(/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/);
if(!ipA)return; // undefined because string not in valid format
for(var i=1;i<5;i++) {
ipA[i]=(+ipA[i]);
if(!(ipA[i]>=0&&ipA[i]<=255))return; // undefined because string not in valid format
}
return ipA[1]+"."+ipA[2]+"."+ipA[3]+"."+ipA[4];
}
答案 2 :(得分:0)
您可以尝试以下方法:
function cleanIP(IP) {
var result = [],
array = ip.split('.');
for (i in array) {
result.push(+array[i]);
}
return result.join('.');
}
通过调用
运行它cleanIP("192.168.001.010");
编写新函数更快,然后搞乱IE;