Problem s vzkreslovanim IMG – JavaScript, AJAX, jQuery – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Problem s vzkreslovanim IMG – JavaScript, AJAX, jQuery – Fórum – Programujte.comProblem s vzkreslovanim IMG – JavaScript, AJAX, jQuery – Fórum – Programujte.com

 

Borisek0
Stálý člen
16. 10. 2014   #1
-
0
-

Zdravím.

Poradíe kde je problém?

Fungovat to gunguje jak má.

První se mi však na ploše vykreslí červené gombiky.

Po vteříně se znění všechny na modre.

a pak to až začne spravně fungovat,

<script src="http://code.jquery.com/jquery-1.10.2.js"></script>
<script type="text/javascript">
setInterval(function()
{
 $("#StazenaData").load('NactiData.php');
 var registr = $("#StazenaData").html(); 

var GPA0 = registr.charAt(7);
var GPA1 = registr.charAt(6);
var GPA2 = registr.charAt(5);
var GPA3 = registr.charAt(4);
var GPA4 = registr.charAt(3);
var GPA5 = registr.charAt(2);
var GPA6 = registr.charAt(1);
var GPA7 = registr.charAt(0);

 
if(GPA0 == 0){document.getElementById("vstup_GPA0").src = "button/modry.gif";
}
else{document.getElementById("vstup_GPA0").src = "button/cerveny.gif";
}


if(GPA1 == 0){document.getElementById("vstup_GPA1").src = "button/modry.gif";
}
else{document.getElementById("vstup_GPA1").src = "button/cerveny.gif";
}

if(GPA2 == 0){document.getElementById("vstup_GPA2").src = "button/modry.gif";
}
else{document.getElementById("vstup_GPA2").src = "button/cerveny.gif";
}

if(GPA3 == 0){document.getElementById("vstup_GPA3").src = "button/modry.gif";
}
else{document.getElementById("vstup_GPA3").src = "button/cerveny.gif";
}

if(GPA4 == 0){document.getElementById("vstup_GPA4").src = "button/modry.gif";
}
else{document.getElementById("vstup_GPA4").src = "button/cerveny.gif";
}

if(GPA5 == 0){document.getElementById("vstup_GPA5").src = "button/modry.gif";
}
else{document.getElementById("vstup_GPA5").src = "button/cerveny.gif";
}

if(GPA6 == 0){document.getElementById("vstup_GPA6").src = "button/modry.gif";
}
else{document.getElementById("vstup_GPA6").src = "button/cerveny.gif";
}

if(GPA7 == 0){document.getElementById("vstup_GPA7").src = "button/modry.gif";
}
else{document.getElementById("vstup_GPA7").src = "button/cerveny.gif";
}
}, 1000);

</script>

<body>
<div style="width: 800px; margin-left: auto; margin-right: auto;">
<div id="wb_PhotoGallery1" style="margin:0 auto;padding:0;position:absolute;top:80px;width:747px;height:96px;text-align:left;z-index:1;">
<table style="width:100%" border="0" cellpadding="0" cellspacing="3" id="PhotoGallery1">
   <tr>
     <img id="vstup_GPA7"src="button/cerveny.gif" width="90" height="90">
     <img id="vstup_GPA6"src="button/cerveny.gif" width="90" height="90">
     <img id="vstup_GPA5"src="button/cerveny.gif" width="90" height="90">
     <img id="vstup_GPA4"src="button/cerveny.gif" width="90" height="90">
     <img id="vstup_GPA3"src="button/cerveny.gif" width="90" height="90">
     <img id="vstup_GPA2"src="button/cerveny.gif" width="90" height="90">
     <img id="vstup_GPA1"src="button/cerveny.gif" width="90" height="90">
     <img id="vstup_GPA0"src="button/cerveny.gif" width="90" height="90">
  </tr>            
</div>

<div id="StazenaData" style="position:absolute;left:10px;top:181px;width:250px;height:16px;z-index:0;text-align:left;"></div>
</body>
</html>
Nahlásit jako SPAM
IP: 213.195.237.–
peter
~ Anonymní uživatel
3981 příspěvků
17. 10. 2014   #2
-
0
-

Presne tak to ma fungovat, tak to mas napsane. Nejdriv se zobrazi html, kde mas cervene. Pak se ceka 1s. Po te se spusti funkce v setInterval, ktera to zmeni na modre, protoze vsechny GPA jsou rovny nule v prvnim nacti.php. A ve 2s se zmeni jinak, pac se zmeni nacti.php.

Jestli se to tedy melo zmenit hned, tak musi bys splnena podminka, ze to budes mit v normalni funkci a tu spustit jeste pred setInterval. Coz znamena spustit ji v <body onload=""> nebo window.onload a nebo pres jquery v onload (to ten nevim, jak se presne dela (pac jquery pouzivam minimalne pro jeho velikost), ale v dokumentaci to je).
A musi byt splnena dalsi podminka, ze nacti.php vrati neco jineho nez nuly.

Nahlásit jako SPAM
IP: 2001:718:2601:1f7:7d67:a0...–
Borisek0
Stálý člen
17. 10. 2014   #3
-
0
-

#2 peter
No těch červených jsem se už zbavil.

Tytvořil jsem další GIF, úplně prázdný s pruhlednym pozadím    .

Po te se spusti funkce v setInterval, ktera to zmeni na modre, protoze vsechny GPA jsou rovny nule v prvnim nacti.php. A ve 2s se zmeni jinak, pac se zmeni nacti.php.

Toto nechapu?

Když se spustí funkce, tak postupuje od vrchu ne?

Teda první stahné ten soubor.

A pak podle výsledku překreslí ty gombiky,ne?

Tudiž již při prvním pruchodu by měli byt data načtena?

Nahlásit jako SPAM
IP: 213.195.237.–
peter
~ Anonymní uživatel
3981 příspěvků
17. 10. 2014   #4
-
0
-

A mozna je tam jeste jeden problem, jestli nacti vrati normalni data a ne nuly.

0. zobrazi se html, ted pruhledny gif
1000. spusti se nacitani souboru (to chvili trva) a mezitim se pokracuje dalsim html kodem, takze zatim je
$("#StazenaData").html() prazdne. Tudiz to vygeneruje cervene puntiky
2000. spusti se druhe nacitani souboru a pro dalsi kod se pouziji data z predchoziho nacitani, ktera uz mezitim stahl ze serveru (pokud ne, tak opet nuly :) )
...

Ajaxove funkce pro stahovani funguji jako casovac. Kdyz chces, aby se data zpracovala hned, tak musis pouzit spravny kod s callback funkci.
http://api.jquery.com/load/
Sak si daj obsah promenne registr vypisovat do nejakeho divu  A pripis si tam za to treba cas nebo nejaky znak, abys vedel, kolik uz probehlo cyklu.

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>load demo</title>
<style>
body {
font-size: 12px;
font-family: Arial;
}
</style>
<script src="//code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
<b>Successful Response (should be blank):</b>
<div id="success"></div>
<b>Error Response:</b>
<div id="error"></div>
<script>
$( "#success" ).load( "/not-here.php", function( response, status, xhr ) {
if ( status == "error" ) {
var msg = "Sorry but there was an error: ";
$( "#error" ).html( msg + xhr.status + " " + xhr.statusText );
}
else {alert(response);} // bych tam pridal jeste tenhle kod
});
</script>
</body>
</html>

Kdezto ty tam pouzivas jinou, zjednodusenou formu, ktera jen prepisuje html na strance. Jenze ona to prepisuje se zpozdenim a dalsi kod, ktery neni uzavreny do te funkce uvnit load proste probiha driv.

Nahlásit jako SPAM
IP: 2001:718:2601:1f7:7d67:a0...–
Borisek0
Stálý člen
17. 10. 2014   #5
-
0
-

#4 peter
Successful Response (should be blank):
10111111
Error Response:

alert take vyhodi 10111111
 

Nahlásit jako SPAM
IP: 213.195.237.–
Borisek0
Stálý člen
17. 10. 2014   #6
-
0
-

Tak jsem zkusíl ten alert(registr) v tom mém a fakt při prvním průchodu vrací prazdný řetězec

Nahlásit jako SPAM
IP: 213.195.237.–
Borisek0
Stálý člen
18. 10. 2014   #7
-
0
-

No jelikož všichni  programátoři, kteří by byli ochotní pomoct, tady vymřelí.

Udělal jsem to po svém.

Při spuštění stránky jsou gombiky průhledné.

Načtu ty data s registru přímo na této stránce v PHP.

Pak si tyto data s PHP vytáhnu v JS a vykreslím gombiky.

Tím vykryjí tu 2 sekundovou mezeru v setInterval

No a funkcí setInterval jsem nechal tak, jen jsem přidal podmínku IF.
Pokud se vrátí prázdny řetězec, tak nic nepřekresluje.
I když to není možná profí řešení, svou úlohu to splní.
 

Dik všem za ochotu a snahu pomoct.

Nahlásit jako SPAM
IP: 213.195.237.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 7 hostů

Podobná vlákna

Problem s pozicovanim img — založil Nark

Img — založil Mirek

Img ze streamu a Img do streamu — založil Mutagen

Php5 img — založil lolik

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý