停止Javascript来舍入大数字ID

Yar*_*rin 5 javascript

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

HTML:

<a class="delete-link" data-id="211466719468855298">Delete</a>?
Run Code Online (Sandbox Code Playgroud)

JS:

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

小提琴: http ://jsfiddle.net/zUbym/1/

Poi*_*nty 8

这有两个原因:

  1. jQuery帮助您将"data-"属性值转换为"适当的"类型
  2. 大数字无法在JavaScript中精确表示,因为所有数字都是64位IEEE 794浮点值.

如果直接使用".attr()"获取属性值,则可以避免数字转换,但是必须将其保留为字符串.或者,您可以使用一些非数字字符("_"或其他)为数据值添加前缀,以防止jQuery尝试帮助您.

  • 如果这是他帮忙的方式+1,不,谢谢. (2认同)