0

以下のコードは、私の問題を単純化したものです。
表示された値は、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>
4

2 に答える 2

2

微妙ですが、JavaScript が数値を処理する方法に興味深い癖があります。

ShowText(07778);

これは機能します。したがって、無視します。[編集 - 以下の注を参照]

ShowText(07700);

これはそうではありません。実際には 4032 の値が得られます。見逃したのは、8 進数の 7700 が 10 進数の 4032 であることです。

したがって、それが機能しない理由は、JavaScript が '7' より上の数字を含まない 0 で始まる数字を 8 進数として扱っているためです。先頭のゼロを削除するか (とにかく数値として扱っています)、引用符を追加するだけで、コードは正常に動作します。

この動作に関するリファレンスについては、https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseInt を参照してください。

ECMAScript 3 では推奨されておらず、ECMAScript 5 では禁止されていますが、多くの実装では、0 で始まる数値文字列を 8 進数として解釈します。

注: エラーをスローしていないため、無視しています。その理由は、明らかなように、7778 は有効な 8 進数ではないため、パーサーは実際には 8 進数ではなく、先頭に 0 が付いた通常の整数であると判断したためです。

于 2013-08-16T11:43:47.193 に答える
0

数値の先頭にゼロを付けているため、誤って 8 進数を使用しています。先頭のゼロを削除すると、期待どおりの動作が得られます。

たとえば、01133(base 8) は603(base 10) です。先頭のゼロを保持したい場合は、代わりに文字列を使用してください。

于 2013-08-16T11:43:36.053 に答える