2012-10-01 63 views
1

我試圖找出爲什麼我的CoffeeScript代碼是不工作:比較數字,以數字作爲字符串

HTML:

<a data-id="5">Click me</a> 

的CoffeeScript:

id = $('a').attr('data-id') 
console.log id == 5 

的問題是從attr('data-id')返回的數字是一個字符串,並將其與ac雙數沒有通過比較。我應該做什麼不同,以便我可以輕鬆比較數字。

+0

在JavaScript'=='會適用於這種情況,但咖啡escript將'=='轉換爲'==='。這會導致比較類型敏感。 – benekastah

+0

很高興知道,謝謝! – Andrew

+0

也許你在數字周圍有空格:「5」與「5」 –

回答

6

您可以使用parseFloatparseInt方法,也看看jQuery的data方法,試圖內容轉換data-屬性的適當的數據類型

id = $('a').data('id') 
console.log id == 5 
+0

兩種解決方案在一個答案。謝謝! – Andrew

+0

如果你發現它足夠可讀,你總是可以用'+ x'來代替'parseInt'或'parseFloat'。我相信它和'Number(x)'基本相同。 – benekastah

+0

出於好奇,我做了一些[測試](http://jsperf.com/9-vs-parseint-9):使用'+'比parseInt/parseFloat快得多。 – phenomnomnominal

0

相同的方式,在Javascript中做

id = '5' 
console.log parseInt(id, 10) == 5 # parseInt() parses a string as an integer 
console.log +id == 5    # + prefix is an "interpret as number" shorthand 
console.log id == 5.toString() # Or convert the other number to a string 

Run this here, all report true