2012-05-14 56 views
1

我有以下HTML:正在讀取HTML5數據而不是字符串?

<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都以相同的方式編碼,都有一個或多個前導零,但一個返回爲字符串,另一個爲數字。

+0

HTML不提供固定的var類型。所以jQuery「猜測」它的內容是什麼。 – YvesR

+0

嘗試'alert(typeof rk)'看看它是否真的是一個數字。屬性應該始終是字符串,如果jQuery將其更改爲一個數字,那麼這是一件壞事。從[jQuery文檔](http://api.jquery.com/data/#data-html5):「每次嘗試將字符串轉換爲JavaScript值(包括布爾值,數字,對象,數組和null),否則它保留爲一個字符串。「所以這是設計。 – RobG

回答

4

的Javascript autoparses所以尾隨「我」在"0001I"導致的JavaScript將它解釋爲一個字符串

+0

謝謝。其他答案也是正確的,但是你關於尾隨我的觀點非常好,並解釋說明。 –

+1

這不是JavaScript將它轉換爲數字,那是jQuery試圖第二次猜測開發人員。 – RobG

2

嘗試:

var pk = $("tr[id='row_" + row + "']").attr('data-pk'); 
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

由於jQuery是搞亂你的數據,你可以這樣做:

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

並且保證你有一個字符串。

相關問題