[Javascript] zero wiodące

0

Witam posiadam taki oto kod, który pobiera godziny z pól następnie je oblicza i wpisuje do nowego pola

<script> var ilek=$_SESSION[ile]; var ileo=$_SESSION[ile2]; var wsumie=((ilek+1)*(ileo+1)); var i; var j; var pom; var h; var hh; var hhh; var hhhh; var roznica; var cal; var reszta; pom=1; function roob() { for(i=1;i<ileo+1;i++) { if(i==1) { pom=(pom+(2*(ilek+1))); } for(j=1;j<ilek+1;j++) { if(j==1) { roznica=0; pom++; h=document.getElementById('pole'+''+pom).value; hh=h.split(':'); var b= parseInt(hh[0]); var c=parseInt(hh[1]); hhh=0; hhh=((b*60)+c); h=document.getElementById('pole'+''+(pom-(ilek+1))).value; hh=h.split(':'); b=0; c=0; b=parseInt(hh[0]); c=parseInt(hh[1]); hhhh=0; hhhh=((b*60)+c); roznica=hhh-hhhh; } h=document.getElementById(('pole'+''+(pom-(ilek+1)))).value; hh=h.split(':'); var e=parseInt(hh[0]); var f=parseInt(hh[1]); hhh=0; hhh=(e*60+f); hhh+=roznica; cal=parseInt(hhh/60); reszta=0; reszta=hhh-(cal*60); if(reszta<10) {var rreszta='0'+reszta; var czyli=cal+':'+rreszta; }else{ var czyli=cal+':'+reszta; } document.getElementById('pole'+''+pom).value=czyli; pom++; } } } Teraz mam pytanie wszystko działa ok, i dobrze oblicza ale tylko w operze, natomiast w IE i FireFox już są błędy, wiem że związane to jest z zerem wiodącym (czyli jak mam 9 to pisze 09) gdyż gdy nie dopisuje 0 to wszystko działa ok. Macie jakieś sugestie ? ```
0

Ten kod jest tak nieczytelny i prawdopodobnie fatalny (przepraszam jeśli go krzywdzę, mówię to na podstawie pobieżnie zaobserwowanych symptomów), że nie chce mi się go czytać i próbować zrozumieć.

Napisz może co ten kod ma dokładnie robić. Co to znaczy "który pobiera godziny z pól następnie je oblicza"? WTF? Oblicza godziny? Co to jest obliczanie godziny? Sumuje godziny z kilku pól? Mnoży? Konwertuje ze stringa "dziesiąta trzydzieści pięć" do "10:35"?

Jak napiszesz w rozsądny sposób co to ma robić to wtedy będę miał w ogóle możliwość przeanalizowania Twojego problemu. Bo to, co piszesz, dopisywanie zera wiodącego, to da się zrobić w... jednej linijce. I to tak, żeby chodziło we wszystkich przeglądarkach. Mogę Ci tę linijkę dać jeśli będziesz umiał ją wstawić, tj. jeśli masz jakiekolwiek pojęcie o programowaniu w języku, którego używasz :P.

0

On po prostu oblicza różnicę między jedną, a drugą godziną konwertując je na sekundy, zamiast od razu skonwertować to na UNIX time...
Potem po obliczeniu różnicy cośtam znowu majstruje i składa tą "godzinę" do kupy.

0

Tak program oblicza różnice między jedną a drugą godziną, zamieniając na minuty, jest to mi potrzebne do dodawaniu rozkładów jazdy

0

Nie lepiej skonwertować np. tym do formatu liczb naturalnych i wtedy odjąć? Potem odmieniasz na wybrany format daty funkcją date().

0

Nie, gdyż cały czas godziny mają być stringiem. Wiem już jaki jest błąd
Program źle parsuje do int:

var c="10:08";
var d=c.split(":");
var e=parseInt(d[0]);
var f=parseInt(d[1]);
document.writeln(e);
document.writeln(f);

document.writeln(f); powinno wyświetlić 8 a wyświetla 0

0

Program dobrze parsuje, ty tylko nie wiesz dlaczego dostajesz 0 zamiast 8. Te cale "zero wiodace" przed inna liczba jest interpretowane przez javascript w calosci jako liczba w systemie osemkowym. Mozesz to przekonwertowac w ten sposob:

parseInt('08', 10)

1 użytkowników online, w tym zalogowanych: 0, gości: 1