i'm trying create button that, when clicked, calls javascript function calculate wifi speed , return value in text box below. i've been following example code:
current location: <br> <button onclick="getlocation()">locate</button> <p id="demo"> latitude: <input type="text" id="lat"> longitude: <input type="text" id="lon"> </p> <script> function getlocation() { if (navigator.geolocation) { navigator.geolocation.getcurrentposition(showposition); } else { x.innerhtml = "geolocation not supported browser."; } } function showposition(position) { document.getelementbyid("lat").value = position.coords.latitude; document.getelementbyid("lon").value = position.coords.longitude; } </script>
and created code wifi speed collection:
current wifi speed: <br> <button onclick="calculatewifispeed()">calculate</button> <p id="demo"> wifi speed: <input type="text" id="wifispeed"> </p> <script> calculatewifispeed(){ var imageaddr = "http://www.kenrockwell.com/contax/images/g2/examples/31120037-5mb.jpg"; var downloadsize = 4995374; //bytes window.onload = function() { var oprogress = document.getelementbyid("progress"); oprogress.innerhtml = "loading image, please wait..."; window.settimeout(measureconnectionspeed, 1); }; function measureconnectionspeed() { var oprogress = document.getelementbyid("progress"); var starttime, endtime; var download = new image(); download.onload = function () { endtime = (new date()).gettime(); showresults(); } download.onerror = function (err, msg) { oprogress.innerhtml = "invalid image, or error downloading"; } starttime = (new date()).gettime(); var cachebuster = "?nnn=" + starttime; download.src = imageaddr + cachebuster; function showresults() { var duration = (endtime - starttime) / 1000; var bitsloaded = downloadsize * 8; var speedmbps = (speedkbps / 1024).tofixed(2); document.getelementbyid("wifispeed").value = speedmbps; oprogress.innerhtml = "your connection speed is: <br />" + speedmbps + " mbps<br />"; } } }
however, button doesn't work , doesn't return anything.
i went , fixed issues stopping running, haven't double checked logic though - i'll let solve rest!
<p id="progress"></p> current wifi speed: <br> <button onclick="calculatewifispeed()">calculate</button> <p id="demo"> wifi speed: <input type="text" id="wifispeed"> </p> <script> var pageready = false; window.onload = function() { pageready = true; }; function calculatewifispeed() { var imageaddr = "http://www.kenrockwell.com/contax/images/g2/examples/31120037-5mb.jpg"; var downloadsize = 4995374; //bytes function waitforpageload() { if(pageready) { settimeout(measureconnectionspeed, 1); }else{ settimeout(waitforpageload, 500); } } function measureconnectionspeed() { var oprogress = document.getelementbyid("progress"); oprogress.innerhtml = "loading image, please wait..."; var starttime, endtime; var download = new image(); download.onload = function () { endtime = (new date()).gettime(); showresults(); } download.onerror = function (err, msg) { oprogress.innerhtml = "invalid image, or error downloading"; } starttime = (new date()).gettime(); var cachebuster = "?nnn=" + starttime; download.src = imageaddr + cachebuster; function showresults() { var duration = (endtime - starttime) / 1000; var bitsloaded = downloadsize * 8; var speedkbps = (1 / duration) * bitsloaded; var speedmbps = (speedkbps / 1024).tofixed(2); document.getelementbyid("wifispeed").value = speedmbps; oprogress.innerhtml = "your connection speed is: <br />" + speedmbps + " mbps<br />"; } } settimeout(waitforpageload, 500); } </script>