★★★★★ 今天发现了微软的一个BUG,很是奇怪,不知道大家见过没有!★★★★★

xiaokang520 2002-10-25 04:53:42

windows2000 Professional
IE 6.0
先看下面一段JavaScript代码:

<html>
<head>
<title>无标题文档</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<script language="JScript">
<!--
function test()
{
document.write(parseInt("01"));
document.write(parseInt("02"));
document.write(parseInt("03"));
document.write(parseInt("04"));
document.write(parseInt("05"));
document.write(parseInt("06"));
document.write(parseInt("07"));
document.write(parseInt("08"));
document.write(parseInt("09"));
document.write(parseInt("10"));
}

// -->
</script>
</head>

<body bgcolor="#FFFFFF" text="#000000">
<form name="form1" method="post" action="">
<input type="button" name="Submit" value="按钮" OnClick="test()">
</form>
</body>
</html>
显示的结果为:12345670010
奇怪吧,但是在Opera中显示的却是对的,IE6,5,4中均显示错误值
解决方案:把parseInt换为parseFloat就是对的,或者把01,02,03前面的0去掉也行
不知道微软这个函数是怎么写的,大家可以试试看呀。
...全文
64 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
emu 2002-10-26
  • 打赏
  • 举报
回复
听说向微软报告新发现的bug有奖金的哦
yxyang 2002-10-26
  • 打赏
  • 举报
回复
不明白,我看是BUG。
rohn 2002-10-26
  • 打赏
  • 举报
回复
ms有点乱
xiaokang520 2002-10-26
  • 打赏
  • 举报
回复
To zhpfaff(zhp):
你说 "只要前面有个0,后面不论跟多少数,IE里都成0了"这句话是不对的,
document.write(parseInt("01"));
document.write(parseInt("02"));
document.write(parseInt("03"));
document.write(parseInt("04"));
document.write(parseInt("05"));
document.write(parseInt("06"));
document.write(parseInt("07"));
这些显示的都是1,2,3,4,5,6,7这是正确的呀。你说的都是变成的0是什么意思?
用parseFloat("01")...("10")
显示就没有问题了,难道Float就不是把前面有"0"的当8进制处理???
zhpfaff 2002-10-25
  • 打赏
  • 举报
回复
09转成8进制是多少,逢8进1吧,因该是11,你因该发现,只要前面有个0,后面不论跟多少数,IE里都成0了,不明白是什么原因
你还是在后面加上个10吧,parseInt("09",10);
xiaokang520 2002-10-25
  • 打赏
  • 举报
回复
奇怪
Opera 6显示结果为:12345678910
IE显示为12345670010
我的程序
parseInt("08");
parseInt("09");
如果是八进制,可为什么居然这两个都显示为0,09转成8进制是多少???
qiushuiwuhen 2002-10-25
  • 打赏
  • 举报
回复
不是bug是因为前缀为 '0' 的字符串被当作八进制

一般用 Number()
方工 2002-10-25
  • 打赏
  • 举报
回复
不是什么bug, javascript和c语言一样,把以0开始的数字认为是8进制数字。
下面摘自mscript5.6 参考:

parseInt 方法
请参阅
isNaN 方法 | parseFloat 方法 | String 对象 | valueOf 方法

应用于: Global 对象
要求
版本 1
返回由字符串转换得到的整数。

parseInt(numString, [radix])
参数
numString
必选项。要转换为数字的字符串。
radix
可选项。在 2 和 36 之间的表示 numString 所保存数字的进制的值。如果没有提供,则前缀为 '0x' 的字符串被当作十六进制,前缀为 '0' 的字符串被当作八进制。所有其它字符串都被当作是十进制的。

87,779

社区成员

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

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