W3-SI.com | HTML | CSS | JavaScript | Načrtovanje | |||||
SERŠ Maribor | Iskanje | Primeri |
Koda: | <script type="text/javascript"> var curPic="slika" function point(xx,yy,cc) { if(xx<0 ¦¦ yy<0 ¦¦ xx>=320 ¦¦ yy>=240) return 0 var x=document.createElement("div") x.style.width="1px" x.style.height="1px" x.style.backgroundColor=cc x.style.top=yy+"px" x.style.left=xx+"px" x.style.overflow="hidden" x.style.position="absolute" document.getElementById(curPic).appendChild(x) } function cls() { var x=document.getElementById(curPic).cloneNode(false) x.id=curPic+"Cloned" document.getElementById(curPic).parentNode.insertBefore(x,document.getElementById(curPic)) document.getElementById(curPic).parentNode.removeChild(document.getElementById(curPic)) document.getElementById(curPic+"Cloned").id=curPic } function narisi() { for(var xx=0;xx<320;xx++) { point(xx,120-Math.sin(xx/20)*40,"black") } } </script> <div id="slika" style="position:relative;width:320px;height:240px;border:solid 1px"> </div> <form action="#"> <p> <input type="button" value="Nariši sinus" onclick="narisi()" /> <input type="button" value="Počisti polje" onclick="cls()" /> </p> </form> |
---|---|
Izgled v brskalniku: |
|
Razlaga: |
Za risanje v JavaScriptu ni posebnih ukazov, zato programerji uporabljamo zvijače, da JavaSript pripravimo do risanja. Ena od metod, kako to storiti, je z dodajanjem značk v HTML strukturo.
Za risanje je najprej potrebna risalna površina. V tem primeru je to element DIV velkosti 320x240px, imenovan slika .
Funkcija point(xx,yy,cc) izriše točko na risalni površini. To stori tako, da ustvari nov, prazen DIV element, ki mu s pomočjo CSS-a določi velikost 1x1px, barvo cc, pozicijo (xx,yy) in druge lastnosti.
Ta element je v pomnilniku brskalnika in še ni viden na strani. S pomočno postopka appendChild(otrok) nato ta element doda v HTML strukturo in tako DIV postane točka na risalni površini.
Če kliknemo na gumb "Nariši sinus", JavaScript pokliče funkcijo narisi() , ki s pomočjo funkcije point nariše v risalno površino matematični sinus.
Čiščenje risalne površine je še en trik, ki ga uporabi funkcija cls() . Ta funkcija najprej ustvari novo risalno površino, in sicer tako, da klonira obstoječo, vendar brez otrok (t.j. točk). To stori z DOM postopkom cloneNode(false) .
Klonirani, prazni risalni površini začasno spremeni ID, saj v HTML dokumentu ne smeta obstajati dve znački z enakim ID-jem.
Z DOM postopkom insertBefore(otrok,brat) vstavi to risalno površino tik pred obstoječo v HTML strukturo.
Nato s postopkom removeChild(otrok) , odstrani staro risalno površino, novi pa spremeni ID nazaj na slika .
Rezultat je nova, prazna risalna površina z enakimi lastnostmi, kot prejšnja. Funkcijo cls() zaženemo, če kliknemo na gumb "Počisti polje".
|