2016-01-27 58 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

谢谢,非常沮丧,我忽略了这样一个愚蠢的错误 –

相关问题