2016-01-27 91 views
1

背後的背景下,還有另一個函數用於偵聽HTML下拉列表中的更改。當發生變化時,JavaScript會調用費用函數並輸入新變量,這些變量應重新計算成本。Javascript函數首次運行,但不會再次

但是,第一次運行此代碼後,代碼將不會再次運行。我知道這一點,因爲只有在第一次調用該函數時纔會顯示警告「I AM RUNNING」。

任何想法,我忽略了什麼?

function costs(f, p) { 
     window.alert("I AM RUNNING"); 
     costs = [10500, 33950, 33950, 22576, 22576, 22576, 39324, 39324, 39324, 39324, 39324, 0]; 
     models = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "\u00a0"]; 
     ind = models.indexOf(f); 
     a = ((p/100)*costs[ind]).toFixed(2); 
     b = a.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); 
     c = "$"+b; 
     return c; 
    }; 

謝謝!

+1

你可以在你的問題中發佈一個完整的代碼示例嗎? – j08691

+0

檢查開發人員工具日誌(大多數瀏覽器中的F12),並查看該函數是否有任何錯誤。 – ssube

回答

3

你在重新定義行的函數內costs

costs = [10500, 33950, 33950, 22576, 22576, 22576, 39324, 39324, 39324, 39324, 39324, 0]; 

使它成爲一個不同的變量名。

+2

只更改名稱只會隱藏一個錯誤。他應該**聲明**內部變量,而不是使用隱式全局變量。 –

+0

謝謝,非常沮喪,我忽略了這樣一個愚蠢的錯誤 –

相關問題