Das Canvas-Element
(EN google-translate)
(PL google-translate)
In das Canvas-Element kann "hinein gemalt" werden. D.h. von Javascript aus können an bestimmte Koordinaten mit bestimmten Befehlen Linien, Primitive und auch Text gesetzt werden.
Ein Beispiel soll dies demonstrieren:
<html>
    <head lang="de">
        <meta charset="iso-8859-1">
        <script language:javascript>
            let HEXA = ["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"];
            var malkontext = null;
            var muenzwurf_x = 0.901;
            function muenzwurf()
            {
                muenzwurf_x = 3.92*muenzwurf_x*(1.0-muenzwurf_x);
                return (Math.round(muenzwurf_x*1000.0))%2;
            }
            function muenzwurf1000(max)
            {
                var x = 0;
                var y = 0;
                var z = 0;
                for(var i=0;i<1000;i++)
                {
                    x+=muenzwurf();
                    y+=muenzwurf();
                    z+=muenzwurf();
                }
                return (x+y*103+z*911)%max;
            }
            //Farbbeispiele: http://html-color-codes.com/rgb.html
            function farbe(r,g,b)
            {
                return "#"+HEXA[Math.floor(r/16)]+HEXA[r%16]+HEXA[Math.floor(g/16)]+HEXA[g%16]+HEXA[Math.floor(b/16)]+HEXA[b%16];         
            }
            function malen()
            {
                //Lazy binding: 
                //Erst, wenn etwas benötigt wird, wird es bereitgestellt.
                if(malkontext==null) 
                {
                    malkontext = document.getElementById("grafik").getContext("2d"); 
                }
                for(var i=0;i<100;i++)
                {
                    var x = muenzwurf1000(500);//+muenzwurf10000(200)+muenzwurf10000(200);
                    var y = muenzwurf1000(200);
                    var breite = muenzwurf1000(100)+10;
                    var hoehe = muenzwurf1000(100)+10;
                    var ROT   = muenzwurf1000(256);
                    var GRUEN = muenzwurf1000(256);
                    var BLAU  = muenzwurf1000(256);
                    malkontext.fillStyle = farbe(ROT,GRUEN,BLAU);
                    malkontext.fillRect(x,y,breite,hoehe);
                } 
                for(var i=0;i<100;i++)
                {
                    var x = muenzwurf1000(500);//+muenzwurf10000(200)+muenzwurf10000(200);
                    var y = muenzwurf1000(200);
                    var breite = muenzwurf1000(100)+10;
                    var durchmesser = muenzwurf1000(10)+10;
                    var ROT   = muenzwurf1000(256);
                    var GRUEN = 0;
                    var BLAU  = 0;
                    malkontext.fillStyle = farbe(ROT,GRUEN,BLAU);
                    malkontext.beginPath();
                    malkontext.arc(x,y,durchmesser,0,2.0*Math.PI,true);
                    malkontext.fill();
                }   
               
            }
        </script>
    </head>
    <body>
        <input style="width:200px" type="button" id="snap" value="malen" onclick="javascript:malen()"/>
        <br/>
        <canvas id="grafik" width="500" height="200"></canvas>
    </body>
</html>
Code 0-1: Quelltext zu obigem Beispiel.