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

Спасибо, очень расстроен, я упустил такую ​​глупую ошибку –

Смежные вопросы