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的学习,看哪本书来解决浏览器兼容
...全文
152 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用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
1. HTML对象获取问题 3 2. const问题 3 3. event.x与event.y问题 3 4. window.location.href问题 3 5. frame问题 3 6. 模态和非模态窗口问题 3 7. firefox与IE的父元素(parentElement)的区别 3 8. document.formName.item(”itemName”) 问题 3 9. 集合类对象问题 3 10. 自定义属性问题 3 11. input.type属性问题 3 12. event.srcElement问题 3 13. body载入问题 3 14. 事件委托方法 3 15. Table操作问题 3 16. 对象宽高赋值问题 3 Ø CSS 3 1. cursor:hand VS cursor:pointer 3 2. innerText在IE中能正常工作,但在FireFox中却不行. 3 3. CSS透明 3 4. css中的width和padding 3 5. FF和IE BOX模型解释不一致导致相差2px 3 6. IE5 和IE6的BOX解释不一致 3 7. ul和ol列表缩进问题 3 8. 元素水平居中问题 3 9. Div的垂直居中问题 3 10. margin加倍的问题 3 11. IE与宽度和高度的问题 3 12. 页面的最小宽度 3 13. DIV浮动IE文本产生3象素的bug 3 14. IE捉迷藏的问题 3 15. float的div闭合;清除浮动;自适应高度 3 16. 高度不适应 3 17. IE6下图片下有空隙产生 3 18. 对齐文本与文本输入框 3 19. LI中内容超过长度后以省略号显示 3 20. 为什么web标准中IE无法设置滚动条颜色了 3 21. 为什么无法定义1px左右高度的容器 3 22. 链接(a标签)的边框与背景 3 23. 超链接访问过后hover样式就不出现的问题 3 24. FORM标签 3 25. 属性选择器(这个不能算是兼容,是隐藏css的一个bug) 3 26. 为什么FF下文本无法撑开容器的高度 3

87,996

社区成员

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

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