1

我有以下 HTML:

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

当我用萤火虫检查它时,它显示为:

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 中的值时,这是萤火虫调试器显示的内容。它们也是稍后在 Ajax 调用中发送到我的 C# 代码的相同值。

pk shows as "0001I"
rk shows as 2000008

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

4

4 回答 4

4

这是设计使然

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

你必须使用的是:

var pk = $("tr[id='row_" + row + "']").attr('data-pk')
var rk = $("tr[id='row_" + row + "']").attr('data-rk')
于 2012-05-14T04:54:56.097 回答
4

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

于 2012-05-14T04:55:04.293 回答
2

尝试:

var pk = $("tr[id='row_" + row + "']").attr('data-pk');
于 2012-05-14T04:54:05.827 回答
1

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

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

并且保证你是一个字符串。

于 2012-05-14T05:01:42.573 回答