下面的代码显示了对我的问题的简单看法。
所显示的值要到07778时才能正常工作,如下图所示,由于某种原因,它会操纵这个数字。从没见过这样的事。我想知道jquery是否有什么作用?使用1.7.1.min.js (是的,我知道它过时了,但我没有权力在这个时候更新我们的网站。)谢谢!
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script type="text/javascript" src="/js/jquery-1.7.1.min.js"></script>
<script>
function ShowText(empid) {
$("#text").text("Valule Passed To Function: " + empid)
return false;
}
</script>
</head>
<body>
<div id="text" class="text" style="margin-bottom:34px;"></div>
<a onclick="ShowText(01133);return false;">01133</a>
<br />
<a onclick="ShowText(02133);return false;">02133</a>
<br />
<a onclick="ShowText(03133);return false;">03133</a>
<br />
<a onclick="ShowText(04133);return false;">04133</a>
<br />
<a onclick="ShowText(05133);return false;">05133</a>
<br />
<a onclick="ShowText(06133);return false;">06133</a>
<br />
<a onclick="ShowText(07133);return false;">07133</a>
<br />
<a onclick="ShowText(07500);return false;">07500</a>
<br />
<a onclick="ShowText(07700);return false;">07700</a>
<br />
<a onclick="ShowText(07750);return false;">07750</a>
<br />
<a onclick="ShowText(07770);return false;">07770</a>
<br />
<a onclick="ShowText(07777);return false;">07777</a>
<br />
<div style="border-bottom:solid 2px black; width:100%; text-align:center;">BROKEN :(</div>
<div style="width:100%; text-align:center;">WORKING :)</div>
<a onclick="ShowText(07778);return false;">07778</a>
<br />
<a onclick="ShowText(07779);return false;">07779</a>
<br />
<a onclick="ShowText(07780);return false;">07780</a>
<br />
<a onclick="ShowText(07799);return false;">07799</a>
<br />
<a onclick="ShowText(07800);return false;">07800</a>
<br />
<a onclick="ShowText(08000);return false;">08000</a>
<br />
<a onclick="ShowText(08133);return false;">08133</a>
<br />
<a onclick="ShowText(09133);return false;">09133</a>
</body>
</html>发布于 2013-08-16 11:43:47
这很微妙,但您在JavaScript处理数字的方式上遇到了一个有趣的怪癖。
ShowText(07778);这个很管用。所以我们会忽略它。编辑-见下面的注释
ShowText(07700);这不是;它实际上给出了4032的值。您忽略的是,7700在八进制是4032在十进制。
因此,它不起作用的原因是JavaScript把你的0前缀数字,没有数字超过'7‘作为八进制。只要去掉前面的零(反正你把它们当作数字),或者添加引号,你的代码就能正常工作了。
有关此行为的参考信息,请参阅Objects/parseInt
虽然ECMAScript 3不鼓励,ECMAScript 5也禁止,但许多实现将以0开头的数字字符串解释为八进制。
注意:我们忽略它是因为它没有抛出错误。正如现在应该看到的那样,的原因是,7778不是一个有效的八进制数,所以解析器决定它实际上不是八进制,它只是一个带前导零的普通整数。
发布于 2013-08-16 11:43:36
你不小心使用了八进制数,因为你用前导零开始你的数字。去掉前导零,你就得到了预期的行为。
例如,01133 (基数8)是603 (基数10)。如果要保留前导零,请使用字符串。
https://stackoverflow.com/questions/18272455
复制相似问题