2013-09-10 4 views
-1

Я пытаюсь сложить результат функции, после того, как каждый раз, когда функция вызывается, вот мой код:Добавление переменной вне функции каждый раз, когда функция называется

function computetime(result) { 
var time=0; 
var mytravelroute=result.routes[0]; 
for (i = 0; i < mytravelroute.legs.length; i++) { 
    time += mytravelroute.legs[i].duration.value; 
} 

var totalSec = time; 

Я хочу добавьте переменную «время», каждый раз, когда вызывается функция. Прямо сейчас переменная «время» каждый раз переписывается, и мне нужно каждый раз фиксировать значение.

Любые идеи? отказ от ответственности: Prog lvl: peon.

+0

Поместите объявление «время» вне функции. – Pointy

ответ

2
var time=0; 
function computetime(result) { 

var mytravelroute=result.routes[0]; 
for (i = 0; i < mytravelroute.legs.length; i++) { 
    time += mytravelroute.legs[i].duration.value; 
} 

var totalSec = time; 
+0

спасибо за помощь ... Мне пришлось сделать комбинацию из нескольких ответов здесь. Я должен был упомянуть, что сама переменная «время» не может быть испорчена, потому что она использовалась для вычисления часов: минут: второй позже в коде .... так вот где была трудность, окончательный код: – eMTy

+0

'var cumulativetime = 0 ; \t функция computetime (результат) { \t \t var time = 0; \t \t var mytravelroute = result.routes [0]; \t \t для (i = 0; i eMTy

1

Похоже, вам просто нужна глобальная переменная.

var totalSec; 

function computetime(result) { 
    var mytravelroute=result.routes[0]; 
    for (i = 0; i < mytravelroute.legs.length; i++) { 
    totalSec += mytravelroute.legs[i].duration.value; 
    } 
1

Вы можете сделать это:

function computetime(result) { 
    computetime.time = computetime.time || 0; 
    var mytravelroute = result.routes[0]; 
    for (i = 0; i < mytravelroute.legs.length; i++) { 
     computetime.time += mytravelroute.legs[i].duration.value; 
    } 
} 
1

Есть много способов сделать это. Это связано с закрытием. Вы должны прочитать о просмотре и закрытии в javascript. Вот один из способов сделать это.

var tracker = { 
    time: 0 
    computetime: function computetime(result) { 
     var mytravelroute=result.routes[0]; 
     for (i = 0; i < mytravelroute.legs.length; i++) { 
      tracker.time += mytravelroute.legs[i].duration.value; 
     } 
     return tracker.time; 
    } 
} 

tracker.computetime(result) 
+0

Ответ на watson тоже довольно умный/хороший. – Parris

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