HTML5数据是作为数字而不是字符串读取的?

时间:2012-05-14 04:48:49

标签: javascript jquery html5

我有以下HTML:

<tr id="row_1" data-rk="02000008" data-pk="0001I">

当我用firebug检查时,它显示为:

dataset DOMStringMap { rk="02000008", pk="0001I"}   
pk "0001I"  
rk "02000008"

然后我用jQuery来读这个:

var pk = $("tr[id='row_" + row + "']").data('pk')
var rk = $("tr[id='row_" + row + "']").data('rk')

然而,当我检查javascript中的值时,这就是firebug调试器显示的内容。它们也是稍后在Ajax调用中发送到我的C#代码的相同值。

pk shows as "0001I"
rk shows as 2000008

有人可以解释一下吗? rk和pk都以相同的方式编码,两者都有一个或多个前导零,但一个以字符串形式返回,另一个以数字形式返回。

4 个答案:

答案 0 :(得分:4)

这是by design

  

每次尝试都将字符串转换为JavaScript值(包括布尔值,数字,对象,数组和null),否则将其保留为字符串。要将值的属性检索为字符串而不尝试转换它,请使用attr()方法。

你必须使用的是:

var pk = $("tr[id='row_" + row + "']").attr('data-pk')
var rk = $("tr[id='row_" + row + "']").attr('data-rk')

答案 1 :(得分:4)

Javascript自动调用,因此"0001I"中的尾随'I'会导致javascript将其解释为字符串

答案 2 :(得分:2)

尝试:

var pk = $("tr[id='row_" + row + "']").attr('data-pk');

答案 3 :(得分:1)

由于jQuery搞乱了你的数据,你可以这样做:

var rk = document.getElementById('row_' + row]).getAttribute('data-rk'); 

并保证你有一个字符串。