1

私は次の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 はどちらも同じ方法でコーディングされます。どちらも 1 つ以上の先行ゼロがありますが、一方は文字列として返され、もう一方は数値として返されます。

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 に答える