| | |
| Stránka: 1 z 1
| [ Príspevkov: 9 ] | |
Autor | Správa |
---|
Registrovaný: 20.03.12 Prihlásený: 26.03.12 Príspevky: 5 Témy: 1 |
Caute
Chcem sa spytat ci je mozne cez select tlacitko atd. ktore je na stranke (html subor) zmenit napriklad farbu SVG objektu vytvoreneho pomocou AJAXu? Teda ak mam tri subory html, js, svg. Viem ze ajax v pohode funguje v spojeni s html ci uz su v jednom subore alebo mam v html subore odkaz na ajaxovy subor, ale ak chcem rovnako nastavit aby sa cez funkciu menila farba svg objektu tak to proste nechce fungovat.
|
|
Registrovaný: 11.08.07 Príspevky: 4088 Témy: 34 Bydlisko: Brno | Napísal Ďuri: 21.03.2012 7:02 | |
|
Asi nieco robis zle, len to z toho popisu nie je celkom dobre poznat, lebo asi nemas presne predstavu, co presne Ajax je. Daj odkaz na zivu ukazku.
|
|
Registrovaný: 20.03.12 Prihlásený: 26.03.12 Príspevky: 5 Témy: 1 | Napísal autor témy Osmargel: 21.03.2012 10:10 | |
|
No ide o to ze nic podobne som nikde na nete nenasiel myslim ako spojenie HTML - AJAX - SVG ale napisem zdrojaky vsetkych suborov ako mam.
svg_ajax.svg
Kód: <svg width="100%" height="100%" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" onload="makeShape(evt)"> <script type="text/javascript" xlink:href="kruh.js"/> </svg> kruh.jsKód: var xhr = vytvorXHR(); function vytvorXHR(){ var xhr; try{ xhr = new XMLHttpRequest(); }catch(e){//pro případ starší verze prohlížeče var MSXmlVerze = new Array('MSXML2.XMLHttp.6.0','MSXML2.XMLHttp.5.0','MSXML2.XMLHttp.4.0','MSXML2.XMLHttp.3.0','MSXML2.XMLHttp.2.0','Microsoft.XMLHttp'); for(var i = 0; i <= MSXmlVerze.length; i ++){ try{ xhr = new ActiveXObject(MSXmlVerze[i]); //alert(MSXmlVerze[i]); break; }catch(e){ //vzniklou chybu ignoruji a pokračuji nastavením další verze } } } if(!xhr) alert("Došlo k chybě při vytváření objektu XMLHttpRequest!"); else return xhr; }
function prectiSoubor(){ if(xhr){ try{ xhr.open("GET",url,true); xhr.onreadystatechange = ctiOdpoved; xhr.send(null); }catch(e){ alert("Nelze se připojit k serveru:\n" + e.toString()); } }else{ alert("Funkce \"precitSoubor()\": chybí objekt XMLHttpRequest"); } }
function ctiOdpoved(){ if(xhr.readyState == 4){ if(xhr.status == 200){ try{ var XMLRes = xhr.responseXML; //zachycení chyb IE a Opery if(!XMLRes || !XMLRes.documentElement){ throw("Chybná struktura XML:\n"+xhr.responseText); } //zachycení chyb firefox var rootNodeName = XMLRes.documentElement.nodeName; if(rootNodeName == "parsereerror"){ throw("Chybná struktura XML:\n"+xhr.responseText); } }catch(e){ alert("Chyba při čtení odpovědi:"+e.toString()); } }else{ alert("Požadavek HTTP není v pořádku.") } } }
var svgns = "http://www.w3.org/2000/svg";
function makeShape(evt) { if ( window.svgDocument == null ) svgDocument = evt.target.ownerDocument;
var shape = svgDocument.createElementNS(svgns, "circle"); shape.setAttributeNS(null, "cx", 25); shape.setAttributeNS(null, "cy", 25); shape.setAttributeNS(null, "r", 20); shape.setAttributeNS(null, "fill", "green"); svgDocument.documentElement.appendChild(shape); } Toto vsetko mi v pohode bezi vykresli sa kruh ak si prezriem svg subor. No a teraz napisem zdrojak html suboru ako mam. ajax1.htmlKód: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns= "http://www.w3.org/1999/xhtml" xml:lang="sk"> <head> <meta http-equiv="content-type" content="aplication/xhtml+xml; charset=windows-1250" /> <title>AJAX</title> </head> <body>
<script type="text/javascript" src="kruh.js"></script>
<input type="button" value="Zobraz" onclick=""> <br> <embed src="svg_ajax.svg" width="200" height="200" type="image/svg+xml" />
</body> </html>
Na onclick nemam priradenu ziadnu funkciu pretoze nic mi nefungovalo ked som sa pokusal o nieco. Ale nejak takto na stlacenie tlacidla alebo cez select menu je vobec mozne aby sa zmenila farba alebo iny parameter vykreslovaneho kruhu v svg?
|
|
Registrovaný: 11.08.07 Príspevky: 4088 Témy: 34 Bydlisko: Brno | Napísal Ďuri: 24.03.2012 13:48 | |
|
Stale nerozumiem, preco spominas Ajax, ty tie Ajaxove funkcie vobec nepouzivas a bola by to celkom hovadina. Mozes vlozit SVG obrazok do HTML dokumentu <object>om miesto <embed>u a ziskas pristup k SVG dokumentu pomocou DOM atributu <object>.contentDocument a nemusis ani pre fciu makeShape definovat ziadny argument.
Neuvazoval si o priamom vlozeni SVG do hlavneho dokumentu? Ak by si pouzival skutocne XHTML, tak to spravis klasicky mixovanim namespacov, alebo ak ti nevadi nefunkcnost vo Firefoxe 3.x, mozes zapisat SVG aj do HTML dokumentu.
|
|
Registrovaný: 20.03.12 Prihlásený: 26.03.12 Príspevky: 5 Témy: 1 | Napísal autor témy Osmargel: 24.03.2012 23:52 | |
|
Mne je jasne ze je mozne SVG dat rovno do HTML a nepotrebujem k tomu AJAX ale to menis potom atributy uz vytvoreneho SVG dokumentu. AJAXom sa da robit aj dynamicke SVG no a mne islo to ci je mozne nejako to dat dohromady. Pri tomto priklade to vyzera ako hovadina ale ja riesim vacsi problem co sa tyka grafu vykreslovaneho pomocou AJAXu do SVG ale som len chcel na takomto malom priklade zistit ze ci je vobec mozne urobit nieco take ze pri stlaceni tlacidla sa zmeni napr. parameter ktory udava farbu objektu vo funkcii makeShape.
Ak som natvrdo definoval: var farba = "blue" a potom vo funkcii makeShape namiesto shape.setAttributeNS(null, "fill", "green"); bolo shape.setAttributeNS(null, "fill", farba); tak to fungovalo no ak som uz pouzil var farba = document.getElementById("tlacidlo").value pricom tlacidlu som samozrejme dopisal id="tlacidlo" a do value som dal "blue" a vo funkcii bolo znova shape.setAttributeNS(null, "fill", farba); tak vykresleny kruh mal defaultnu farbu teda ciernu.
|
|
Registrovaný: 11.08.07 Príspevky: 4088 Témy: 34 Bydlisko: Brno | Napísal Ďuri: 25.03.2012 10:26 | |
|
Robis chybu niekde inde, z toho, co si napisal, by malo vsetko fungovat. Keby si poslal aktualne zdrojove kody, na ktorych mozem presne zreprodukovat problem (idealne ako odkaz na zivu ukazku), bolo by to fajn.
|
|
Registrovaný: 20.03.12 Prihlásený: 26.03.12 Príspevky: 5 Témy: 1 | Napísal autor témy Osmargel: 25.03.2012 20:33 | |
|
Mozno robim len neviem ze kde lebo hej malo by to fungovat ale proste sprava sa to programatorsky nelogicky alebo jak by som to nazval.
Tu je odkaz na stranku kde tie subory mam ulozene teraz to nie je nastavene na kliknutie tlacidla ale je to tak ze uz pri nacitani stranky by sa mala farba kruhu zmenit na modru, no kruh je stale cierny:
http://omega.tuke.sk/student/peter.mihok/dp/JavaScript_Ajax/ajax/
A len na pripomenutie ak natvrdo do zdrojaku v kruh.js napisem var farba = "blue"; tak to funguje.
|
|
Registrovaný: 11.08.07 Príspevky: 4088 Témy: 34 Bydlisko: Brno | Napísal Ďuri: 25.03.2012 21:48 | |
|
Aj si si skusil otvorit Firebug alebo ine developer tools v hocijakom prehliadaci? V case, ked ony Javascript bezi, este nie je nacitany cely dokument a preto ma document.getElementById("tlacidlo") hodnotu null. Mozes napriklad cakat na nacitanie celej stranky:
Kód: window.onload = function() { //cely kod, ktory bezi, az ked je web nacitany };
|
|
Registrovaný: 20.03.12 Prihlásený: 26.03.12 Príspevky: 5 Témy: 1 | Napísal autor témy Osmargel: 25.03.2012 22:15 | |
|
No neskusal som ziaden developer tools ale napadlo ma ze hodnota document.getElementById("tlacidlo").value bude null tak som este skusil dat v HTML <script type="text/javascript" src="kruh.js"></script> uplne na koniec ale aj tak mi to nefungovalo.
No a k tomu co si poslal window.onload ... tebe to funguje? lebo ja jak skusam tak skusam ale kruh sa mi teraz uz ani nezobrazi.
|
|
| Stránka: 1 z 1
| [ Príspevkov: 9 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| SVG editor v Grafické programy | 1 | 464 | 12.12.2010 18:40 Ďuri | | svg rotacia v Ostatné | 3 | 387 | 26.07.2012 15:14 venom2 | | SVG vykreslovanie v cecku v Assembler, C, C++, Pascal, Java | 12 | 763 | 19.06.2011 17:52 ice-g | | WordPress a SVG obrazky v Redakčné systémy | 3 | 351 | 17.12.2014 16:43 hatto13 | | AJAX refresh v JavaScript, VBScript, Ajax | 0 | 1048 | 19.10.2008 11:20 max-m | | ajax reload v PHP, ASP | 12 | 576 | 04.09.2012 19:22 Ďuri | | Ajax manual v JavaScript, VBScript, Ajax | 7 | 1240 | 27.05.2010 21:33 DARSON | | php,ajax v PHP, ASP | 4 | 546 | 15.01.2012 22:45 shaggy | | AJAX problem v JavaScript, VBScript, Ajax | 2 | 508 | 07.05.2012 19:37 shaggy | | ajax anketa v Ostatné | 4 | 1512 | 12.05.2007 20:56 javo | | Ajax - help v JavaScript, VBScript, Ajax | 2 | 306 | 06.11.2013 14:26 Qip | | ajax guestbook v Ostatné | 0 | 1149 | 09.08.2007 22:25 javo | | ajax standardy v JavaScript, VBScript, Ajax | 1 | 655 | 12.05.2009 17:48 Ďuri | | porovnanie casu ajax v JavaScript, VBScript, Ajax | 2 | 452 | 04.12.2009 22:04 Blackdevil | | Ajax posielanie udajov v JavaScript, VBScript, Ajax | 7 | 789 | 14.04.2009 21:07 Ďuri | | AJAX - vratenie pola v JavaScript, VBScript, Ajax | 9 | 502 | 26.02.2010 15:46 Ďuri |
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|