Autor | Zpráva | ||
---|---|---|---|
David1256 Profil |
Dobrý den,
v html5 canvasu, resp. v Raphael Frameworku kreslím objekty na canvas. Kreslení do canvasu probíhá asi takto: var utvar = nazevCanvasu.path("M 0 17.3 L 30.6 0.9 L 30.6 169.7 L 2.4 186.1 Z"); Tento kód vykreslí do divu s nazvem nazevCanvasu canvas a vykreslí do něj útvar se souřadnicemi výše. Problém, však je, že potřebuji vykreslit stejný útvar do několika canvasů (divů) zároveň. Napadlo mě proto jít cestou JS cyklu. Jenomže to by potom musel vypadat kód nějak takto: var utvar = nazevCanvasu[i].path("M 0 17.3 L 30.6 0.9 L 30.6 169.7 L 2.4 186.1 Z"); Ale div nemůže být pojmenován jako pole tedy: <div id="nazevCanvasu[1]"></div> Nevymyslel byste někdo, co s tím? Děkuji. |
||
Joker Profil |
#2 · Zasláno: 4. 9. 2014, 10:12:09
David1256:
Žádná věda, může se přece jmenovat nazevCanvasu1 |
||
Chamurappi Profil |
#3 · Zasláno: 4. 9. 2014, 10:12:50
Reaguji na Davida1256:
„Ale div nemůže být pojmenován jako pole“ Může. Proč by nemohl? Akorát to nefunguje jako pole. Ono přímé adresování elementů přes id stejně nefunguje spolehlivě napříč prohlížeči, takže stejně musíš k nalezení svých <div> ů použít document.getElementById a je tedy celkem jedno, jak se jmenují proměnné a jaká jsou ídéčka…
|
||
David1256 Profil |
Chamurappi:
No jo, jenomže tohle nefunguje: var utvar = document.getElementById("nazevCanvasu1").path("M 0 17.3 L 30.6 0.9 L 30.6 169.7 L 2.4 186.1 Z"); Undefined is not a function Ten prvek to totiž nenalezne přes getElementById, ten Raphael framework asi vyžaduje striktně tuhle syntaxi: var utvar = nazevCanvasu1.path("M 0 17.3 L 30.6 0.9 L 30.6 169.7 L 2.4 186.1 Z"); A <div id="nazevCanvasu1"> v mém HTML existuje. Jak říkám, dolní kód funguje, horní ne. |
||
Joker Profil |
David1256:
A odkud berete tu JS proměnnou? edit: Myslím nazevCanvasu1 |
||
David1256 Profil |
#6 · Zasláno: 4. 9. 2014, 13:49:16
Joker:
var nazevCanvasu1 = new Raphael(document.getElementById('nazevCanvasu1'), 300, 300); Měl jsem tu proměnnou definovanou v jiném souboru a jak jsem byl zahlcený v kódu, kde je 100x za sebou něco jako toto: var utvar = nazevCanvasu1.path("M 0 17.3 L 30.6 0.9 L 30.6 169.7 L 2.4 186.1 Z"); |
||
Joker Profil |
#7 · Zasláno: 4. 9. 2014, 14:25:59
David1256:
No prosím :-) Pak se z toho dá vyrobit i to pole: for (var i = 1; i <= pocet; i++) { nazevCanvasu[i] = new Raphael(document.getElementById('nazevCanvasu' + i), 300, 300); } |
||
David1256 Profil |
#8 · Zasláno: 4. 9. 2014, 15:52:48
Joker:
Jj, to už mi je jasné. |
||
Časová prodleva: 10 let
|
0