2012-03-12 2 views
0

У меня есть метод в javascript, который использует метод split для хранения времени в массиве, а затем конвертирует время в секунды. Но когда я отлаживаю, массив всегда имеет первые 2 элемента и игнорирует последний. Не знаете почему?Метод Javascript Split не работает должным образом

GetSeconds : function (time) {      
    var timesecs = 0; 
    var min = 1;     
    var timeArray = time.split(ctx.options.separator); //this always contain 2 elements 

    while (timeArray.length > 0) { 
     timesecs += min * parseInt(timeArray.pop()); 
     min *= 60; 
    } 
    return timesecs;      
} 

ctx.options.separator - это переменная, которая хранит мой разделитель. Я пытался с ":" и время прошло "00:00:00". Этот метод вызывается из другого метода, который увеличивает второй.

Я попробовал его в IE, Chrome и Firebug. Это происходит по-разному, когда я отлаживаю Visual Studio (так как этот код находится в моем приложении .net)

ответ

1

Я пробовал fiddle, и там все хорошо работает. Вы уверены, что работает ctx.options.separator?

+0

BTW, я пробовал в Chrome17 и IE9 –

+0

Спасибо! На самом деле проблема заключалась в 'parseInt (timeArray.pop())'. parseInt не смог проанализировать значения, превышающие 8. Нам нужно использовать base of 10 как 'parseInt (timeArray.pop(), 10)'. Кроме того, я думаю, у меня был timeArray.pop() в часах. –

+0

Какой тип weird-o parseInt используется для базы 8? –

0

Проблема может быть проблемой браузера, если ctx.options.separator генерируется должным образом. Какой браузер вы используете?

Используйте этот кросс-браузерный метод, который сделает все работоспособным, как ожидается, независимо от того, какой браузер вы используете. http://blog.stevenlevithan.com/archives/cross-browser-split

Это всегда сработало для меня.

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