停止Javascript来舍入大数字ID

时间:2012-06-09 15:51:37

标签: javascript

以下内容会弹出一个警告框:211466719468855300。为什么会发生这种情况,即使我尝试将其转换为String?我怎样才能准确地阅读它?

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/

1 个答案:

答案 0 :(得分:8)

这种情况有两个原因:

  1. jQuery帮助您将“数据 - ”属性值转换为“适当的”类型
  2. 在JavaScript中无法准确表示大的数字,因为所有数字都是64位IEEE 794浮点值。
  3. 如果您直接使用“.attr()”获取属性值,则可以避免数字转换,但您必须将其保留为字符串。或者,您可以使用一些非数字字符(“_”或其他)为数据值添加前缀,以防止jQuery试图帮助您。