Bugos képbetöltés
Üdv!
Van adatbázisban egy számsorozatom. pl: (kartyak="2,3,4,12,4,6") Ezt onloadnál kiválasztom az adott felhasználótól és berakom egy tömbbe.
Ezekhez tartozik egy egy kép és véletlenszerűen betöltődik 5 db egymás után külön td-kbe majd kitörlődik a tömbből. Működik is csak az a baj, hogy néha bugos és egy egy képet nem tölt be, viszont nem tudom miért. Lehet a setTimeout túl rövid neki és annyi idő alatt nem tudja betölteni?
Íme:
function oszt()
{
var ajaxRequest; // The variable that makes Ajax possible!
try{
// Opera 8.0+, Firefox, Safari
ajaxRequest = new XMLHttpRequest();
} catch (e){
// Internet Explorer Browsers
try{
ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try{
ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e){
// Something went wrong
alert("Your browser broke!");
return false;
}
}
}
// Create a function that will receive data sent from the server
ajaxRequest.onreadystatechange = function(){
if(ajaxRequest.readyState == 4){
var vissza=ajaxRequest.responseText;
pakli=vissza.split(",");
szamlalo=0;
elsolap=0;
for (var i in pakli)
{
szamlalo++;
}
document.getElementById("pakli1").innerHTML=szamlalo;
attunes(pakli,elsolap);
}
}
ajaxRequest.open("GET", "leosztas.php" ,true);
ajaxRequest.send(null);
}
function attunes(pakli2,lapszam)
{
szamlalo=document.getElementById("pakli1").innerHTML;
kez[lapszam]=Math.floor(Math.random()*szamlalo);
pakli2.splice(kez[lapszam],1);
szamlalo--;
document.getElementById("pakli1").innerHTML=szamlalo;
ujkep=document.createElement("img");
ujkep.style.width=50+"px";
ujkep.style.height=70+"px";
ujkep.id="k"+pakli2[kez[lapszam]];
ujkep.style.filter='alpha(opacity=' + 0 + ')';
ujkep.style.opacity = 0;
ujkep.src="./cards/"+pakli[kez[lapszam]]+".jpg";
document.getElementById("h"+lapszam).appendChild(ujkep);
attunes2(lapszam,pakli2[kez[lapszam]],0,pakli2);
}
function attunes2(jertek,aktlap,fade,pakli3)
{
j=jertek;
lap=aktlap;
l=fade;
deck=pakli3;
db=0;
if (l==100)
{
clearTimeout(idozito);
if (j!=4)
{
kezdb=j+1;
osztlap=setTimeout("attunes(deck,kezdb)",100);
}
}
else
{
fading=l+5;
fading2=fading/100;
document.getElementById("h"+j).children[0].style.filter='alpha(opacity=' + fading + ')';
document.getElementById("h"+j).children[0].style.opacity=fading2;
idozito=setTimeout("attunes2(j,lap,fading,deck)",10);
}
}
■ Van adatbázisban egy számsorozatom. pl: (kartyak="2,3,4,12,4,6") Ezt onloadnál kiválasztom az adott felhasználótól és berakom egy tömbbe.
Ezekhez tartozik egy egy kép és véletlenszerűen betöltődik 5 db egymás után külön td-kbe majd kitörlődik a tömbből. Működik is csak az a baj, hogy néha bugos és egy egy képet nem tölt be, viszont nem tudom miért. Lehet a setTimeout túl rövid neki és annyi idő alatt nem tudja betölteni?
Íme:
function oszt()
{
var ajaxRequest; // The variable that makes Ajax possible!
try{
// Opera 8.0+, Firefox, Safari
ajaxRequest = new XMLHttpRequest();
} catch (e){
// Internet Explorer Browsers
try{
ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try{
ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e){
// Something went wrong
alert("Your browser broke!");
return false;
}
}
}
// Create a function that will receive data sent from the server
ajaxRequest.onreadystatechange = function(){
if(ajaxRequest.readyState == 4){
var vissza=ajaxRequest.responseText;
pakli=vissza.split(",");
szamlalo=0;
elsolap=0;
for (var i in pakli)
{
szamlalo++;
}
document.getElementById("pakli1").innerHTML=szamlalo;
attunes(pakli,elsolap);
}
}
ajaxRequest.open("GET", "leosztas.php" ,true);
ajaxRequest.send(null);
}
function attunes(pakli2,lapszam)
{
szamlalo=document.getElementById("pakli1").innerHTML;
kez[lapszam]=Math.floor(Math.random()*szamlalo);
pakli2.splice(kez[lapszam],1);
szamlalo--;
document.getElementById("pakli1").innerHTML=szamlalo;
ujkep=document.createElement("img");
ujkep.style.width=50+"px";
ujkep.style.height=70+"px";
ujkep.id="k"+pakli2[kez[lapszam]];
ujkep.style.filter='alpha(opacity=' + 0 + ')';
ujkep.style.opacity = 0;
ujkep.src="./cards/"+pakli[kez[lapszam]]+".jpg";
document.getElementById("h"+lapszam).appendChild(ujkep);
attunes2(lapszam,pakli2[kez[lapszam]],0,pakli2);
}
function attunes2(jertek,aktlap,fade,pakli3)
{
j=jertek;
lap=aktlap;
l=fade;
deck=pakli3;
db=0;
if (l==100)
{
clearTimeout(idozito);
if (j!=4)
{
kezdb=j+1;
osztlap=setTimeout("attunes(deck,kezdb)",100);
}
}
else
{
fading=l+5;
fading2=fading/100;
document.getElementById("h"+j).children[0].style.filter='alpha(opacity=' + fading + ')';
document.getElementById("h"+j).children[0].style.opacity=fading2;
idozito=setTimeout("attunes2(j,lap,fading,deck)",10);
}
}
próbáld ki
(használj kódszinenzőt/formázást, a könnyebb értelmezhetőség miatt)
Túlbonyolítod
var
kulcsszóval, és valószínűleg felülírják egymást.Kezdetnek próbáld meg kidobálni belőle a felesleget, deklarálni a megfelelő változókat, aztán tesztelni, és egyesével add hozzá a szolgáltatásokat.
Megvan a hiba