www.WebTips.pl: Mały problemik z funkcją - www.WebTips.pl

Skocz do zawartości


Strona 1 z 1

Mały problemik z funkcją

#1 Użytkownik nie jest zalogowany   mores4 

  • Nowicjusz
  • Grupa Użytkownik
  • Postów 9
  • Rejestracja 16 lut 10

Napisano 06 marzec 2010 - 23:33

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, nie wiem dlaczego. Macie jakieś sugestie ?
0


Strona 1 z 1

Odpowiedzi do tego tematu

#2 Użytkownik nie jest zalogowany   Elektryk 

  • User pod napięciem
  • PipPipPipPipPipPip
  • Grupa Moderator
  • Postów 1312
  • Rejestracja 09 cze 06
  • MiejscowośćŚwiętochłowice

Napisano 06 marzec 2010 - 23:54

Sprawdź konsolę błędów Javascript w obu przeglądarkach. Tam powinieneś znaleźć podpowiedź gdzie szukać problemu.
Dołączona grafika
0

#3 Użytkownik nie jest zalogowany   mores4 

  • Nowicjusz
  • Grupa Użytkownik
  • Postów 9
  • Rejestracja 16 lut 10

Napisano 07 marzec 2010 - 01:43

Konsola nie pokazuje żadnych błędów.
0

#4 Użytkownik nie jest zalogowany   komeniusz 

  • Bywalec
  • PipPip
  • Grupa Użytkownik
  • Postów 121
  • Rejestracja 06 mar 10

Napisano 07 marzec 2010 - 11:26

Może wklej pełen kod, wraz z HTML'em
document.getElementById(('pole' [...]


I nie pisze się
<script>


Tylko
<script type="text/javascript">

Niezależny freelancer
0

#5 Użytkownik nie jest zalogowany   mores4 

  • Nowicjusz
  • Grupa Użytkownik
  • Postów 9
  • Rejestracja 16 lut 10

Napisano 07 marzec 2010 - 12:27

Całość wg mnie jest dobrze napisana gdyż w operze wszystko działa jak należy i jest poprawnie obliczone.


$_SESSION[ile]=$_POST[ile_k];   //zmienne zapami뵡ne jako zmienne sesyjne pobrane z formularza z pliku index.html
$_SESSION[ile2]=$_POST[ile_o];
$_SESSION[pierwszy_p]=$_POST[p_p];
$_SESSION[ostatni_p]=$_POST[o_p];
$_SESSION[wojod]=$_POST[wojod];
$_SESSION[wojdo]=$_POST[wojdo];
$_SESSION[uwagi]=$_POST[uwagi];



if($ile1<=1)
{
echo "
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />

<script type='text/javascript'>
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;


function roob()
{
pom=(1+(2*(ilek+1)))
while(pom<wsumie-2)
{

  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++;
}


}
}

</script></head>";


echo "<body align='center'>
<form  name='formi' method='post' action='2.php'>
<table align='center'>";
$co=1;
for($i=1;$i<=$_SESSION[ile2]+1;$i++)   // tworzymy tabele do kt䳥j wpisujemy godziny odjazd䷠z przystznk䷍
{
  echo "<tr>";
   for($j=1;$j<=$_SESSION[ile]+1;$j++)
    {
	if($i==1 && $j!=1){echo "<td><select class=input1 name='pole$co' id='pole$co'><option>F<option>F6<option>F7<option>F67<option>6<option>7<option>67</td>";} // puste pole 1,1

else if($i==1 && $j==1){echo "<td>&nbsp</td>";} //puste pole 1.1

else if($j==1 && $i !=2 && $i!=$_SESSION[ile2]+1){echo "<td><input  type='text' name='pole$co'  id='pole$co'></td>"; //pola z nazwami przystank䷍
}

else if($j==1 && $i==2)
{
echo "<td><input type='text' name='pole$co' value='$_SESSION[pierwszy_p]' size='12' id='pole$co' ></td>"; //pierwszy przystanek
}

else if($j==1 && $i==$_SESSION[ile2]+1)
{
echo "<td><input type='text' name='pole$co' value='$_SESSION[ostatni_p]' size='12' id='pole$co'></td>"; //ostatni przystanek
}

else
{
echo "<td><input type='text' class=input1 name='pole$co'  id='pole$co'></td>";
}
$co++;
		 }
		 echo "</tr>";
		 
		 }
			 echo "</table><br><input type='button' value='Wypelnij' onclick='roob()'><input type='submit' name='dod' value='dodaj'>";
			 $_SESSION[ile_pol]=$co-1;
			 "
		
			 </form>";


 
 
 ?>

0

#6 Użytkownik nie jest zalogowany   exceptional 

  • Weteran
  • PipPipPipPipPipPip
  • Grupa Moderator
  • Postów 1709
  • Rejestracja 30 kwi 06
  • MiejscowośćŁódź

Napisano 07 marzec 2010 - 13:56

$_SESSION['ile']=$_POST['ile_k'];

Stosuj cudzysłowy.

Możesz też sprawdzić, czy poszczególne fragmenty kodu działają dobrze i w ten sposób znaleźć błąd.
Poza forum pomagam wyłącznie za pieniądze.
Brainfucker.pl | DeviantART | Kliknij i zmuś Griwesa do pisania (:

Deo Optimo Maximo
0

#7 Użytkownik nie jest zalogowany   Elektryk 

  • User pod napięciem
  • PipPipPipPipPipPip
  • Grupa Moderator
  • Postów 1312
  • Rejestracja 09 cze 06
  • MiejscowośćŚwiętochłowice

Napisano 07 marzec 2010 - 14:50

Możesz także dopisać w ważnych punktach funkcji linijkę alert(jakas_zmienna); by kontrolować zawartość zmiennych.
Dołączona grafika
0

#8 Użytkownik nie jest zalogowany   mores4 

  • Nowicjusz
  • Grupa Użytkownik
  • Postów 9
  • Rejestracja 16 lut 10

Napisano 07 marzec 2010 - 15:45

To raczej nie chodzi o błąd w kodzie gdyż jeśli by takowy był to w operze również powinno być źle a jest dobrze.
0

#9 Użytkownik nie jest zalogowany   Elektryk 

  • User pod napięciem
  • PipPipPipPipPipPip
  • Grupa Moderator
  • Postów 1312
  • Rejestracja 09 cze 06
  • MiejscowośćŚwiętochłowice

Napisano 07 marzec 2010 - 17:08

Jak pokazuje ten temat Opera interpretuje JS bardzo po swojemu.

Powiedz mi jak ma wyglądać przykładowe id przekazywane do funkcji getElementById np w tej linijce:
h=document.getElementById(('pole'+''+(pom-(ilek+1)))).value;
?
Dołączona grafika
0

#10 Użytkownik nie jest zalogowany   mores4 

  • Nowicjusz
  • Grupa Użytkownik
  • Postów 9
  • Rejestracja 16 lut 10

Napisano 08 marzec 2010 - 01:10

Tak:
echo "<td><input  type='text' name='pole$co'  id='pole$co'></td>"


gdzie $co jest zwiększane w pętli

Zauważyłem, że problem pojawia się przy dodawaniu zera wiodącego do liczby, np jak mam 9 to chce aby było 09 robiąc '0'+zmienna. Opera to ładnie interpretuje, ale ie i ff już nie.
0

#11 Użytkownik nie jest zalogowany   Session 

  • Bywalec
  • PipPip
  • Grupa Użytkownik
  • Postów 239
  • Rejestracja 23 lut 09
  • MiejscowośćTarnów

Napisano 08 marzec 2010 - 22:03

:blink:

Już chwile programuje strony, ale czegoś takiego to ja nie widziałem:
echo "<td><input  type='text' name='pole$co'  id='pole$co'></td>"


Przecież jak są zmienne to z tekstem łączy się je za pomocą operatora, a jest nim znak kropki:

Cytat

echo '<td><input type="text" name="pole'.$co.'" id="pole'.$co.'"></td>'

Jeśli tu jest błąd to tylko wynikający z łączenia zmiennych z tekstem.
W sumie to troche tylko takie wtrącenie, bo to nie tyczy się JS, ale jak są gdzieś podobne rzeczy to mogą generować błędy.
Ogólnie to w PHP operatorem łączącym jest kropka, a w JS jest + , wszystko działa na tej samej zasadzie, więc przyjrzyj się, czy nie masz podobnych błędów w JS.

Cytat

Zauważyłem, że problem pojawia się przy dodawaniu zera wiodącego do liczby, np jak mam 9 to chce aby było 09 robiąc '0'+zmienna. Opera to ładnie interpretuje, ale ie i ff już nie.
Sprawdź, czy przypadkiem nie masz tam tak jak opisałem powyżej.
No i po co to czytasz ?
Pomocy na PW i GG nie... a zresztą kto by chciał mojej pomocy... ;)

Dołączona grafika
Dołączona grafika
0

#12 Użytkownik nie jest zalogowany   mores4 

  • Nowicjusz
  • Grupa Użytkownik
  • Postów 9
  • Rejestracja 16 lut 10

Napisano 08 marzec 2010 - 22:16

Poprawiłem, ale niestety dalej jest źle oprócz opery w której chodzi ładnie.
Wiem że 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

Strona 1 z 1


Szybka odpowiedź

  

Użytkownicy przeglądający ten temat: 1
0 użytkowników, 1 gości, 0 anonimowych