javascript浏览器兼容问题

aamxy123 2010-09-13 02:28:16
初学javascript,看的是 张孝祥的javascript网页开发。很老的教程,看完了
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>

<body>
<script type="text/livescript">
/* isNumeric - 判断一个字符串中的内容是否全是数字字符,如果全是返回true,
否则,返回false*/
function isNumeric(str)
{
if (str.length == 0)
{
return false;
}
for(var i=0; i<str.length; i++)
{
/*字符串之间也可以比较大小,大小按首字符的编码值决定,如果首字符相等,则比较第二个字符,依次往后逐个比较。*/
if (str.charAt(i)<"0" || str.charAt(i)>"9")
{
return false;
}
}
return true;
}

/* js_verify - 完全用JavaScript程序代码来判断一个字符串是否是合法的IP地址,
如果是返回true,否则,返回false。*/
function js_verify(addr)
{
//将ip地址的各段保存到一个数组中。
var part_addr = addr.split(".");
if (part_addr.length != 4)
{
return false;
}
else
{
var part;
//将part_addr中的元素索引号逐个赋值给part
for (part in part_addr)
{
if(isNumeric(part_addr[part]))
{
/*如果字符串与数值比较,字符串将先转换成数值后再参与比较。即使在下面的语句中不调用parseInt方法对part_addr[part]进行转换,直接用part_addr[part]与0比较,也是可以的。*/
if (parseInt(part_addr[part])<0 || parseInt(part_addr[part])>255)
{
return false;
}
}
else
{
return false;
}
}
}
return true;
}

/* jsreg_verify -结合JavaScript程序代码和正则表达式模式来判断一个字符串是否是合法的IP地址,如果是则返回true,否则,返回false。*/
function jsreg_verify(addr)
{
var reg = /^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/;
if (reg.exec(addr) != null)
{
//下面直接用符串与数值比较,字符串将先转换成数值
if (RegExp.$1<0 || RegExp.$1>255) return false;
if (RegExp.$2<0 || RegExp.$2>255) return false;
if (RegExp.$3<0 || RegExp.$3>255) return false;
if (RegExp.$4<0 || RegExp.$4>255) return false;
}
else
{
return false;
}
return true;
}

/* reg_verify - 完全用正则表达式来判断一个字符串是否是合法的IP地址,
如果是则返回true,否则,返回false。*/
function reg_verify(addr)
{
var reg = /^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])(\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])){3}$/;
if(addr.match(reg))
{
return true;
}
else
{
return false;
}
}
</script>
<p>输入要校验的ip地址:<input type="text" name="txtIp" value="255.222.33.111" /><br />
<input type="button" name="btn1" value="测试JavaScript验证"
onclick="alert(js_verify(txtIp.value))" /><br />
<input type="button" name="btn1" value="测试JavaScript和正则表示式验证"
onclick="alert(jsreg_verify(txtIp.value))" /><br />
<input type="button" name="btn1" value="测试正则表示式验证测试"
onclick="alert(reg_verify(txtIp.value))" /><br /></p>

</body>
</html>




这段验证IP合法的代码,只支持IE,试过改了 document.getElementsByName,没弄成,求教怎么让这段JS在Firefox也能起作用


另外问下 关于javascript的学习,看哪本书来解决浏览器兼容
...全文
143 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
aamxy123 2010-09-13
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 jol_boy 的回复:]

楼主写js,最好遵循W3C的标准去写
1、首先 这句话<script type="text/livescript">就写错了,应该是<script type="text/javascript">代码修改好了,如下

[/Quote]

livescript是DW生成没点好,那个 你是把input标签的name换成id了吧,不换的话 直接用getElementsByName()方法怎么无效果呢??手册上说 getElementsByName()也是支持W3C的
jol_boy 2010-09-13
  • 打赏
  • 举报
回复
楼主写js,最好遵循W3C的标准去写
1、首先 这句话<script type="text/livescript">就写错了,应该是<script type="text/javascript">代码修改好了,如下

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
</head>

<body>
<script type="text/javascript">
/* isNumeric - 判断一个字符串中的内容是否全是数字字符,如果全是返回true,
否则,返回false*/
function isNumeric(str)
{
if (str.length == 0)
{
return false;
}
for(var i=0; i<str.length; i++)
{
/*字符串之间也可以比较大小,大小按首字符的编码值决定,如果首字符相等,则比较第二个字符,依次往后逐个比较。*/
if (str.charAt(i)<"0" || str.charAt(i)>"9")
{
return false;
}
}
return true;
}

/* js_verify - 完全用JavaScript程序代码来判断一个字符串是否是合法的IP地址,
如果是返回true,否则,返回false。*/
function js_verify(addr)
{
alert(addr);
//将ip地址的各段保存到一个数组中。
var part_addr = addr.split(".");
if (part_addr.length != 4)
{
return false;
}
else
{
var part;
//将part_addr中的元素索引号逐个赋值给part
for (part in part_addr)
{
if(isNumeric(part_addr[part]))
{
/*如果字符串与数值比较,字符串将先转换成数值后再参与比较。即使在下面的语句中不调用parseInt方法对part_addr[part]进行转换,直接用part_addr[part]与0比较,也是可以的。*/
if (parseInt(part_addr[part])<0 || parseInt(part_addr[part])>255)
{
return false;
}
}
else
{
return false;
}
}
}
return true;
}

/* jsreg_verify -结合JavaScript程序代码和正则表达式模式来判断一个字符串是否是合法的IP地址,如果是则返回true,否则,返回false。*/
function jsreg_verify(addr)
{
var reg = /^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/;
if (reg.exec(addr) != null)
{
//下面直接用符串与数值比较,字符串将先转换成数值
if (RegExp.$1<0 || RegExp.$1>255) return false;
if (RegExp.$2<0 || RegExp.$2>255) return false;
if (RegExp.$3<0 || RegExp.$3>255) return false;
if (RegExp.$4<0 || RegExp.$4>255) return false;
}
else
{
return false;
}
return true;
}

/* reg_verify - 完全用正则表达式来判断一个字符串是否是合法的IP地址,
如果是则返回true,否则,返回false。*/
function reg_verify(addr)
{
var reg = /^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])(\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])){3}$/;
if(addr.match(reg))
{
return true;
}
else
{
return false;
}
}
</script>
<p>输入要校验的ip地址:<input type="text" id="txtIp" value="255.222.33.111" /><br />
<input type="button" id="btn1" value="测试JavaScript验证"
onclick="alert(js_verify(document.getElementById('txtIp').value))" /><br />
<input type="button" id="btn1" value="测试JavaScript和正则表示式验证"
onclick="alert(jsreg_verify(document.getElementById('txtIp').value))" /><br />
<input type="button" id="btn1" value="测试正则表示式验证测试"
onclick="alert(reg_verify(document.getElementById('txtIp').value))" /><br /></p>

</body>
</html>



lw19870811 2010-09-13
  • 打赏
  • 举报
回复
楼主alert(js_verify(txtIp.value))有问题。首先应该给<input type="text" name="txtIp" value="255.222.33.111" />一个id为txtIp.value,才能这样用!
WebAdvocate 2010-09-13
  • 打赏
  • 举报
回复
市面上好像没有专门的书,上CSDN的跨浏览器开发专区去学学吧
或者,可以自己看看 w3help.org

87,902

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧