2012-06-09 3 views
5

以下は、警告ボックスの読み取りを211466719468855300にスローします。これを文字列にキャストしようとしたときに、なぜこれが起こっていますか?どうすればそれを正確に読むことができますか?大きな数値IDを丸めることからJavascriptを停止する

HTML:

<a class="delete-link" data-id="211466719468855298">Delete</a>​ 

JS:

$('.delete-link').click(function(e) { 
     var $item =$(this); 
     var itemID = String($item.data('id')); 
     alert(itemID); 
}); 

フィドル:http://jsfiddle.net/zUbym/1/

答えて

8

二つの理由のために起こっている:jQueryのは、あなたの「データ - 」属性値に「適切な」タイプのすべての数字が64であるため、大きなは、JavaScriptで正確に表現できないことを

  • 番号を変換するの賛成を行い

    1. ビットIEEE 794浮動小数点値。

    ".attr()"で属性値を直接取得すると、数値の変換は避けられますが、その値を文字列にしておく必要があります。あるいは、データ値の先頭に数字以外の文字(「_」など)を付けると、jQueryがあなたに有利に働くのを防ぐことができます。

  • +2

    +1もし彼が好意を持っているなら---いいえ、ありがとう。 –

    +0

    Pointy-回避策のおかげです。 – Yarin

    +0

    @RoyiNamir "data-"属性がJSONのように見える場合は便利ですが、疑わしい機能だと私は同意します。 – Pointy

    関連する問題