下面的代码显示了我的问题的简单 View 。
显示的值直到 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>
最佳答案
这很微妙,但您在 JavaScript 处理数字的方式中遇到了一个有趣的怪癖。
ShowText(07778);
这有效。所以我们会忽略它。 [编辑 - 请参阅下面的注释]
ShowText(07700);
这不是;它实际上给出的值是 4032。您错过的是八进制的 7700 是十进制的 4032。
因此,它不起作用的原因是 JavaScript 将以 0 为前缀的数字(不包含“7”以上的数字)视为八进制。只需删除前导零(无论如何,您都将它们视为数字),或添加引号,您的代码就可以正常工作。
有关此行为的引用,请参阅 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseInt :
Although discouraged by ECMAScript 3 and forbidden by ECMAScript 5, many implementations interpret a numeric string beginning with a leading 0 as octal.
注意:我们忽略它,因为它没有抛出错误。 原因,现在应该很明显了,是 7778 不是一个有效的八进制数,因此解析器决定它实际上根本不是八进制,只是带有前导零的普通整数。
关于javascript - onclick方法调用javascript,其中jquery用于显示值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18272455/