javascript - onclick方法调用javascript,其中jquery用于显示值

标签 javascript jquery html

下面的代码显示了我的问题的简单 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/

相关文章:

jquery - 滚动时如何更改菜单事件链接?

javascript - 有没有办法在 Django 中显示登录错误?

javascript - 动画进度条文本显示

javascript - JS 根据其属性之一减少列表

javascript - 卡在Node + MongoDB异步查询问题上

c# - 在重定向时显示动画 gif 文件直到 asp 页面加载?

html - Chrome 选择列表样式行为过滤选择列表选项

javascript - 当 child 的 onMouseOver 时,父亲的 onMouseOut 被调用

javascript 数组和/或 jquery $.inArray() 和 .splice()

javascript - 在 jQuery 中几秒后显示和隐藏 div