我有以下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都以相同的方式编码,两者都有一个或多个前导零,但一个以字符串形式返回,另一个以数字形式返回。
答案 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');
并保证你有一个字符串。