2014-04-15 38 views
-1

我必須失去了一些東西..不知道爲什麼我的JavaScript失敗或不工作Javascript字符串的indexOf並不如預期

var discount = 10; 
var newTemp; 

if (discount != null) { 
    if (discount.indexOf("%") > -1) { 
     newTemp = discount.substring(0, 2) + '%'; 
    } else { 
     newTemp = discount; 
    } 
} //end of outer if 

上面的腳本作品時,折扣=「10.0%」 但沒有工作時,折扣= 10

可能不是最好的方法,但我所要做的就是如果折扣值包含%符號,然後用new值設置newTemp變量。否則就保持原樣。

任何想法,當折扣值就是爲什麼控制失敗= 10

+0

它失敗如何?你看到什麼錯誤? –

+0

我沒有看到任何錯誤。我做了快速調試通過放置警報,它停止在if(discount.indexOf(「%」)> -1)如果折扣的價值= 10 – Jagdish

回答

2

因爲「10%」是一個字符串,因此具有indexOf方法,和10是可能的整數或號碼。

嘗試discount.toString().indexOf('%')

+0

我認爲你是對的,它是對待10作爲數字,但我試過你.toString()解決方案,但沒有工作 – Jagdish

+0

它是太難以幫助你提供的信息。您應該考慮改進您的調試過程 - http://getfirebug.com/javascript –

+0

感謝您的反饋,我改變了一點邏輯,但瞭解整體問題是因爲變量值被視爲數字。 – Jagdish

0

這是因爲你沒有在else分支追加「%」。

var newTemp; 
if (discount != null) { 
    if (discount.indexOf("%") > -1) { 
     newTemp = discount.substring(0, 2); 
    } else { 
     newTemp = discount; 
    } 
} //end of outer if 
newTemp += '%'; 

也作爲雨果說,數量10不具有的indexOf方法,它是一個字符串的方法。