2012-05-14 6 views
1

I次のHTMLがあります。HTML5データが文字列ではなく数値として読み取られていますか?

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

しかし、これはされています。私は、これを読むためのjQueryを使用し

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

:私は放火犯でこれをチェックすると

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

それはとして示し私のjavascriptの値をチェックすると、firebugのデバッガが表示されるもの。また、後でAjax呼び出しでC#コードに送信される値と同じです。

pk shows as "0001I" 
rk shows as 2000008 

誰かがこれを説明できますか? rkとpkの両方が同じ方法でコード化されていますが、どちらも1つ以上の先行ゼロを持っていますが、1つは文字列として返し、もう1つは数値として返します。

+0

HTMLは固定varタイプを表示しません。だから、jQueryはコンテンツに関するものを「推測」します。 – YvesR

+0

'alert(typeof rk)'を試して、本当に数字かどうか確認してください。属性は文字列でなければなりません。もしjQueryがそれを数値に変更するなら、それは悪いことです。 [jQueryのドキュメント](http://api.jquery.com/data/#data-html5)から: "文字列をJavaScript値に変換しようとすると、ブーリアン、数字、オブジェクト、配列、およびそれ以外の場合は文字列として残されます)。それは設計によるものです。 – RobG

答えて

4

Javascriptのautoparses「私は」"0001I"に末尾Javascriptを文字列として解釈するのはjQuery以来

+0

ありがとうございます。他の答えも正解でしたが、後ろのことについてのあなたの意見はとてもよく、説明しています。 –

+1

それは数に変換しているjavascriptではなく、それは2番目の開発者を推測しようとしているjQueryです。 – RobG

2

試してみてください。

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

これはby designです:

すべての試みはJavaScript値に文字列を変換するために行われる(これはブール値、数値、オブジェクト、配列、およびヌルを含んで)そうでない場合はそれは文字列として残されます。値の属性を変換しようとすることなく文字列として取得するには、attr()メソッドを使用します。

あなたが代わりに使用する必要がすることです:

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

は、あなたのデータをめちゃくちゃにされる原因となるので、

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

とすると、文字列が保証されます。

関連する問題