Kończenie funkcji js

0

Sytuacja wygląda tak
Fragment kodu ze strony

<div id = "place"><div id="slider"></div></div>

slider to galeria zdjęć, które rotują (raz pojawia się jedno raz inne). obsługuje je funkcja "galeria"
Użytkownik może jednak zażyczyć sobie, by w div place znalazło się coś innego np. dokument pdf. Jak klient już przeczyta ten dokument to może nacisnąć inny przycisk, który z powrotem przywróci zdjęcia w to miejsce.
I teraz o co chodzi.
Jak klient wciśnie przycisk "pdf" to w miejscu "place" pojawia się pdf. Inne wypełnienie div'a "place powoduje, że mniej więcej w 70% przypadków funkcja galeria się wykrzacza. TypeError: document.getElementById(...) is null - jest to zgodne z prawdą bo "slidera" już tu nie ma. więc jak klient przywraca div slider to nic się nie dzieje. (funkcja galeria się zawiesiła więc nie wyświetla kolejnych zdjęć - logiczne) .
alternatywą mogłoby być ponowne uruchomienie funkcji galeria - jest tylko jeden problem, że czasami funkcja działa i wówczas chodzi 2 razy co powoduje, że rotator galerii "głupieje".
Rozwiązaniem by było zatrzymanie funkcji galeria i uruchomienie jej ponownie. Tyle, że nie wiem jak ją zatrzymać.

0
frankiejojo napisał(a):

Rozwiązaniem by było zatrzymanie funkcji galeria i uruchomienie jej ponownie. Tyle, że nie wiem jak ją zatrzymać.

A skąd my mamy wiedzieć, nie widząc kodu?

0

function galeria()
{

			numer++; if (numer>(<?php echo $liczbaFotek;?>)) numer=1;
			if(numer==1){var plik = "<a href='javascript:PokazSlajd();'><?php echo $photo1Min;?></a>"; var smallPhoto= "<?php echo $smallphotos1;?>";}					
			if(numer==2){var plik = "<a href='javascript:PokazSlajd();'><?php echo $photo2Min;?></a>"; var smallPhoto= "<?php echo $smallphotos2;?>";}
			if(numer==3){var plik = "<a href='javascript:PokazSlajd();'><?php echo $photo3Min;?></a>"; var smallPhoto= "<?php echo $smallphotos3;?>";}
			if(numer==4){var plik = "<a href='javascript:PokazSlajd();'><?php echo $photo4Min;?></a>"; var smallPhoto= "<?php echo $smallphotos4;?>";}
			if(numer==5){var plik = "<a href='javascript:PokazSlajd();'><?php echo $photo5Min;?></a>"; var smallPhoto= "<?php echo $smallphotos5;?>";}
			if(numer==6){var plik = "<a href='javascript:PokazSlajd();'><?php echo $photo6Min;?></a>"; var smallPhoto= "<?php echo $smallphotos6;?>";}
			if(numer==7){var plik = "<a href='javascript:PokazSlajd();'><?php echo $photo7Min;?></a>"; var smallPhoto= "<?php echo $smallphotos7;?>";}	
			if(numer==8){var plik = "<a href='javascript:PokazSlajd();'><?php echo $photo8Min;?></a>"; var smallPhoto= "<?php echo $smallphotos8;?>";}
			if(numer==9){var plik = "<a href='javascript:PokazSlajd();'><?php echo $photo9Min;?></a>"; var smallPhoto= "<?php echo $smallphotos9;?>";}
			if(numer==10){var plik = "<a href='javascript:PokazSlajd();'><?php echo $photo10Min;?></a>"; var smallPhoto= "<?php echo $smallphotos10;?>";}
			if(numer==11){var plik = "<a href='javascript:PokazSlajd();'><?php echo $photo11Min;?></a>"; var smallPhoto= "<?php echo $smallphotos11;?>";}
			if(numer==12){var plik = "<a href='javascript:PokazSlajd();'><?php echo $photo12Min;?></a>"; var smallPhoto= "<?php echo $smallphotos12;?>";}
			if(numer==13){var plik = "<a href='javascript:PokazSlajd();'><?php echo $photo13Min;?></a>"; var smallPhoto= "<?php echo $smallphotos13;?>";}
			if(numer==14){var plik = "<a href='javascript:PokazSlajd();'><?php echo $photo14Min;?></a>"; var smallPhoto= "<?php echo $smallphotos14;?>";}
			if(numer==15){var plik = "<a href='javascript:PokazSlajd();'><?php echo $photo15Min;?></a>"; var smallPhoto= "<?php echo $smallphotos15;?>";}
			if(numer==16){var plik = "<a href='javascript:PokazSlajd();'><?php echo $photo16Min;?></a>"; var smallPhoto= "<?php echo $smallphotos16;?>";}
			if(numer==17){var plik = "<a href='javascript:PokazSlajd();'><?php echo $photo17Min;?></a>"; var smallPhoto= "<?php echo $smallphotos17;?>";}
			if(numer==18){var plik = "<a href='javascript:PokazSlajd();'><?php echo $photo18Min;?></a>"; var smallPhoto= "<?php echo $smallphotos18;?>";}
			if(numer==19){var plik = "<a href='javascript:PokazSlajd();'><?php echo $photo19Min;?></a>"; var smallPhoto= "<?php echo $smallphotos19;?>";}
			if(numer==20){var plik = "<a href='javascript:PokazSlajd();'><?php echo $photo20Min;?></a>"; var smallPhoto= "<?php echo $smallphotos20;?>";}
			document.getElementById("slider").innerHTML = plik;
			$("#slider").fadeIn(500);
			document.getElementById("miniaturki").innerHTML = smallPhoto;
			
			timer1 = setTimeout("zmienslajd()", 5000);
			timer2 = setTimeout("schowaj()", 4500);
		}```
Funkcja "galeria" jest uruchamiana na samym początku
0

Jak klient chce zobaczyć wspomnianego pdf to klika przycisk , który uruchamia następującą funkcję
```
function pdfData(){
var w = window.innerWidth;
var hr = new XMLHttpRequest();
var url = "opis/pdfData.php";
var ofertaNr = document.getElementById("ofertaNr").value;
var vars = "ofertaNr="+ofertaNr+"&szerokosc="+w;
hr.open("POST", url, true);
hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
hr.onreadystatechange = function() {
if(hr.readyState == 4 && hr.status == 200) {
var return_data = hr.responseText;
document.getElementById("place").innerHTML = return_data;
}
}
hr.send(vars); // Actually execute the request
document.getElementById("place").innerHTML = "processing...";
}

0

Jak klient chce wrócić do galerii to uruchomiana jest funkcja.
```
function galeriaData(){
var w = window.innerWidth;
var hr = new XMLHttpRequest();
var url = "opis/galeriaData.php";
var ofertaNr = document.getElementById("ofertaNr").value;
var vars = "ofertaNr="+ofertaNr+"&szerokosc="+w;
hr.open("POST", url, true);
hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
hr.onreadystatechange = function() {
if(hr.readyState == 4 && hr.status == 200) {
var return_data = hr.responseText;
document.getElementById("place").innerHTML = return_data;
}
}
hr.send(vars); // Actually execute the request
document.getElementById("place").innerHTML = "processing...";
}

1
frankiejojo napisał(a):

function galeria()
{

  		numer++; if (numer>(<?php echo $liczbaFotek;?>)) numer=1;
  		if(numer==1){var plik = "<a href='javascript:PokazSlajd();'><?php echo $photo1Min;?></a>"; var smallPhoto= "<?php echo $smallphotos1;?>";}					
  		if(numer==2){var plik = "<a href='javascript:PokazSlajd();'><?php echo $photo2Min;?></a>"; var smallPhoto= "<?php echo $smallphotos2;?>";}
  		if(numer==3){var plik = "<a href='javascript:PokazSlajd();'><?php echo $photo3Min;?></a>"; var smallPhoto= "<?php echo $smallphotos3;?>";}
  		if(numer==4){var plik = "<a href='javascript:PokazSlajd();'><?php echo $photo4Min;?></a>"; var smallPhoto= "<?php echo $smallphotos4;?>";}
  		if(numer==5){var plik = "<a href='javascript:PokazSlajd();'><?php echo $photo5Min;?></a>"; var smallPhoto= "<?php echo $smallphotos5;?>";}
  		if(numer==6){var plik = "<a href='javascript:PokazSlajd();'><?php echo $photo6Min;?></a>"; var smallPhoto= "<?php echo $smallphotos6;?>";}
  		if(numer==7){var plik = "<a href='javascript:PokazSlajd();'><?php echo $photo7Min;?></a>"; var smallPhoto= "<?php echo $smallphotos7;?>";}	
  		if(numer==8){var plik = "<a href='javascript:PokazSlajd();'><?php echo $photo8Min;?></a>"; var smallPhoto= "<?php echo $smallphotos8;?>";}
  		if(numer==9){var plik = "<a href='javascript:PokazSlajd();'><?php echo $photo9Min;?></a>"; var smallPhoto= "<?php echo $smallphotos9;?>";}
  		if(numer==10){var plik = "<a href='javascript:PokazSlajd();'><?php echo $photo10Min;?></a>"; var smallPhoto= "<?php echo $smallphotos10;?>";}
  		if(numer==11){var plik = "<a href='javascript:PokazSlajd();'><?php echo $photo11Min;?></a>"; var smallPhoto= "<?php echo $smallphotos11;?>";}
  		if(numer==12){var plik = "<a href='javascript:PokazSlajd();'><?php echo $photo12Min;?></a>"; var smallPhoto= "<?php echo $smallphotos12;?>";}
  		if(numer==13){var plik = "<a href='javascript:PokazSlajd();'><?php echo $photo13Min;?></a>"; var smallPhoto= "<?php echo $smallphotos13;?>";}
  		if(numer==14){var plik = "<a href='javascript:PokazSlajd();'><?php echo $photo14Min;?></a>"; var smallPhoto= "<?php echo $smallphotos14;?>";}
  		if(numer==15){var plik = "<a href='javascript:PokazSlajd();'><?php echo $photo15Min;?></a>"; var smallPhoto= "<?php echo $smallphotos15;?>";}
  		if(numer==16){var plik = "<a href='javascript:PokazSlajd();'><?php echo $photo16Min;?></a>"; var smallPhoto= "<?php echo $smallphotos16;?>";}
  		if(numer==17){var plik = "<a href='javascript:PokazSlajd();'><?php echo $photo17Min;?></a>"; var smallPhoto= "<?php echo $smallphotos17;?>";}
  		if(numer==18){var plik = "<a href='javascript:PokazSlajd();'><?php echo $photo18Min;?></a>"; var smallPhoto= "<?php echo $smallphotos18;?>";}
  		if(numer==19){var plik = "<a href='javascript:PokazSlajd();'><?php echo $photo19Min;?></a>"; var smallPhoto= "<?php echo $smallphotos19;?>";}
  		if(numer==20){var plik = "<a href='javascript:PokazSlajd();'><?php echo $photo20Min;?></a>"; var smallPhoto= "<?php echo $smallphotos20;?>";}
  		document.getElementById("slider").innerHTML = plik;
  		$("#slider").fadeIn(500);
  		document.getElementById("miniaturki").innerHTML = smallPhoto;
  		
  		timer1 = setTimeout("zmienslajd()", 5000);
  		timer2 = setTimeout("schowaj()", 4500);
  	}```
Funkcja "galeria" jest uruchamiana na samym początku
  1. Czyżby PHP nie posiadał tablic? Dobra rada - poczytaj o tablicach
  2. Czy ja dobrze widzę że znów ktoś próbuje składać skrypty PHP za pomocą skryptów JS? Dobra rada - to się nie uda
0
frankiejojo napisał(a):

function galeria()

To jest potworek jakiś kulawy.
Zacznij od przepisania tego z wykorzystaniem tablic.

0

Potrzebujesz sprawdzić, jaka wartość zwracana jest jako hr.responseText.
Podczas przywracania "trybu galerii" zwrócony ciąg powinien zawierać <div id="slider">, skoro skrypt galerii później go łapie.

Inna sprawa, że dodawanie elementów za pomocą innerHTML jest niewskazane i może rodzić problemy przy późniejszym odwoływaniu się do nich, lepiej użyć appendChild.

A swoją drogą tworzenie zmiennej: return_data jest niepotrzebne i tylko zaciemnia kod.

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