2013-11-04 104 views
0

我只是嘗試使用獲取某個字符串的第一個和第三個字符以下遺漏的類型錯誤:對象600有沒有方法「子」

function kFormatter(num) { 
    return num > 999 ? (num/1000).toFixed(1) + 'K' : num 
} 
var AmountOrdered = Math.ceil($(this).val()/100.0) * 100; 
var formatAmountOrdered = kFormatter(AmountOrdered); 
console.log(formatAmountOrdered.substring(0, 1)); 

裏面我控制檯日誌我看到下面的錯誤

Uncaught TypeError: Object 600 has no method 'substring' 

回答

5

更改功能

function kFormatter(num) { 
    return num > 999 ? (num/1000).toFixed(1)+'K' : ''+num 
} 

,以便它總是返回一個字符串。

+0

這工作完美,非常感謝 – Curtis

+1

@Curtis不要忘了接受這個答案如果它解決了您的問題,那麼具有相同問題的未來訪問者將知道要先嚐試什麼。 – jbabey

0

似乎子字符串在您的代碼中轉換爲int。你需要將其轉換爲string

var formatAmountOrdered = kFormatter(AmountOrdered) + ''; 
0

的問題是,如果該參數num不大於999,則函數會返回一個數值,而不是字符串。數字值沒有substring方法。

您可以修改的表達總是通過改變返回一個字符串:

return num > 999 ? (num/1000).toFixed(1) + 'K' : num 

到:

return num > 999 ? (num/1000).toFixed(1) + 'K' : num + '' 
相關問題