2014-12-03 64 views
0

與indexof()相反的JavaScript函數是什麼?與indexof()相反的javascript函數是什麼?

在這個我的代碼,當你按下按鈕。它會顯示3 [來自indexof(".")]。

但我想發揮作用的indexof()是相反的,這讓我2 [十進制]

http://jsfiddle.net/TyV3s/1/

<!DOCTYPE html> 
<body> 
<button onclick="myFunction()">Try it</button> 

<p id="demo"></p> 

<script> 
function myFunction() { 
    var str = "150.20"; 
    var n = str.indexOf("."); 
    document.getElementById("demo").innerHTML = n; 
} 
</script> 

</body> 
</html> 
+1

所以基本上你想知道點後面是否有2位數字。對? – 2014-12-03 11:13:40

回答

3

有點顧名思義,lastIndexOf將在這裏幫助。

唯一的問題是它仍然會從字符串末尾開始編號,因此您必須執行類似str.length - str.lastIndexOf(".") - 1的操作才能獲得您要查找的2。沒有內置的功能。

+0

不起作用--- http://jsfiddle.net/TyV3s/3/ – 2014-12-03 11:05:10

+2

'lastIndexOf'從結尾開始,但仍然從字符串的開始處開始計數。在這種情況下,'str.length'是6.和6-3 = 3.所以你需要添加另一個-1(對於不計算長度的點)來得到2 – 2014-12-03 11:21:52

2

試試這個:

str.split(".")[1].length; 

您可以.split()方法在"."分割字符串,並與[1]得到的第一個指標,並計算它的長度。


Demo


由於明鏡Vampyr評論,所以我覺得應該是這樣,你可以用這個更新:只有

function myFunction() { 
    var str = "150.22"; 
    var dot = str.indexOf("."); 
    var n = (dot != -1) ? str.split(".")[1].length : "This value does not have decimals."; 
    document.getElementById("demo").innerHTML = n; 
} 

Another Demo.

+0

我認爲這是一個好的解決方案它顯示在點後面是否有2位數字。 (也許另一個檢查是必要的,因爲它可能看起來像這個「123」。所以再檢查一下indexOf(「。」)> 0是否有用) – 2014-12-03 11:18:10

相關問題