User:JohnDR/jsexp
Appearance
HTML/DOM
[edit]Button Animation
[edit]<html> <head> <script type="text/javascript"> function mouseOver() { document.b1.src ="first.gif" } function mouseOut() { document.b1.src ="second.gif" } </script> </head> <body> <a href="http://www.w3schools.com" target="_blank"> <img border="0" alt="Visit W3Schools!" src="b_pink.gif" name="b1" onmouseOver="mouseOver()" onmouseOut="mouseOut()" /> </a> </body> </html>
Form Validate
[edit]<script type="text/javascript"> function validate_email(field, alert_txt) { with (field) { apos=value.indexOf("@") dotpos=value.lastIndexOf(".") if (apos<1||dotpos-apos<2) { alert(alert_txt); return false } else { return true; } } } function validate_form(thisform) { with (thisform) { if (validate_email(email,"Not valid e-mail address!")==false) { email.focus(); return(false); } } } </script> <body> <form action="submitpage.htm" onsubmit="return validate_form(this);" method="post"> Email: <input type="text" name="email" size="30"> <input type="submit" value="Submit"> </form> </body>
javascript version html test
[edit]- ff2.0 is javascript1.7
- ie6.0 is javascript1.3
<HEAD> <SCRIPT LANGUAGE="JavaScript"> <!-- This script is from http://javascript.internet.com/user-details/javascript-version.html --> <!-- Begin jsver = "1.0"; // End --></SCRIPT> <SCRIPT LANGUAGE="JavaScript1.1"><!-- Begin jsver = "1.1"; // End --></SCRIPT> <SCRIPT Language="JavaScript1.2"><!-- Begin jsver = "1.2"; // End --></SCRIPT> <SCRIPT Language="JavaScript1.3"><!-- Begin jsver = "1.3"; // End --></SCRIPT> <SCRIPT Language="JavaScript1.4"><!-- Begin jsver = "1.4"; // End --></SCRIPT> <SCRIPT Language="JavaScript1.5"><!-- Begin jsver = "1.5"; // End --></SCRIPT> <SCRIPT Language="JavaScript1.6"><!-- Begin jsver = "1.6"; // End --></SCRIPT> <SCRIPT Language="JavaScript1.7"><!-- Begin jsver = "1.7"; // End --></SCRIPT> <SCRIPT Language="JavaScript1.8"><!-- Begin jsver = "1.8"; // End --></SCRIPT> <NOSCRIPT> <B>Your browser does not currently support JavaScript.</B> <P><HR><P> With Internet Explorer 5: Go to Tools Menu|Internet Options, Security Tab and click on the Custom Level. Then select disable active scripting under the scripting section. </NOSCRIPT> <!-- STEP TWO: Add the last coding to the BODY of your HTML document --> <BODY> <SCRIPT LANGUAGE="JavaScript"><!-- Begin document.write("<B>Your browser supports JavaScript version " + jsver + ".</B>") // End --></SCRIPT>
Goodies
[edit]Netflix online rent simulation
[edit]// definitions here var maxdisc=2; var hmin=new Array; // hmin is the min day of a state var hmax=new Array; // hmax is the max dat of a state var hh=new Array; // hh is the state of a particular disk var hhd=new Array; // hhd contains the n days for a particular disk var hhr=new Array; // contains the random number // state 0 - in netflix // state 1 - in mail // state 2 - in house // state 3 - in mail hmin[0] = 1; hmax[0]=2; hmin[1] = 1; hmax[1]=2; hmin[2] = 2; hmax[2]=5; hmin[3] = 1; hmax[3]=2; var i,dy=0; var tot=0; for(i=0;i<maxdisc;i++) { // one disc at a time hh[i]=0; hhd[i]=0; hhr[i]=getrand(hh[i]); } // process one day at a time for(dy=0;dy<100;dy++) { for(i=0;i<maxdisc;i++) { // one disc at a time // print("Day "+dy+": Disc "+i+" is in state "+hh[i]+", max="+hhr[i]); // increment the day hhd[i]++; if(hhd[i]==hhr[i]) { hh[i]++; // advance the state if(hh[i]==4) hh[i]=0; if(hh[i]==2) tot++; hhr[i]=getrand(hh[i]); hhd[i]=0; } } print("Day "+dy+": Discs "+cntit()+" Total Rented: "+tot); } function getrand(state) { var j; if(state==2) { switch(cntit()) { case 0: case 1: hmin[2]=2; hmax[2]=5; break; case 2: hmin[2]=3; hmax[2]=6; break; case 3: hmin[2]=4; hmax[2]=7; break; default: hmin[2]=5; hmax[2]=8; break; } hmin[2]=1; hmax[2]=2; } j=Math.floor(Math.random()*1000) % (hmax[state]-hmin[state]+1); j=j+hmin[state]; return(j); } function cntit() { var cnt,i; cnt=0; for(i=0;i<maxdisc;i++) { if(hh[i]==2) cnt++; } return(cnt); }
Benchmark Scripts
[edit]array being released in memory
[edit]- Summary: YES! firefox/ie releases the memory allocated (local variable) inside the function().
- refer to "var thh" below:
- If the "glb=hh.keys();" is changed to "glb.push(hh.keys());", then memory will continuously go up!!! This means that variables are released smartly.
<html><head><script type="text/javascript"> var c=0, t; function myrand(limit) { // limit is optional. Default is 1000000 // Need 30% more to cover all combinations. For example, if limit=100, you need 130 iterations to get all 100 combinations. var initialseed=7; var thelimit = limit ? limit : 1000000; var sum=initialseed; var cntr=0; this.myrand = function() { sum = sum*71 + 3; // 49 is letter "a", 73 is 122-49. however, 71 has more unique combination sum = sum % thelimit; // 250000 combinations if(sum==initialseed) cntr++; return((sum+cntr) % thelimit); } this.getcntr = function() { return(cntr) }; } function hash(ini) { var ownfunc=new Array; var ii; this.keys = function() { var thh=new Array; ccc=0; for(ii in this) { ccc++; if(ii in ownfunc) continue; thh[ii]=this[ii]; } return(thh); // same as this without the methods } for(ii in this) ownfunc[ii]=1; // save all known methods for(ii in ini) this[ii]=ini[ii]; // initial keys } function timedCount() { ccc=0; glb=hh.keys(); document.getElementById('txt').value=c+" "+ccc; c=c+1 t=setTimeout("timedCount()",100) } function stopCount() { clearTimeout(t); } var hh=new hash(); var rr=new myrand(10000000); // create hash of 900000 keys for(i=0;i<900000;i++) { hh['a'+rr.myrand()]=1; } </script></head><body> <form> <input type="button" value="Start count!" onClick="timedCount()"> <input type="text" id="txt"> <input type="button" value="Stop count!" onClick="stopCount()"> </form><p> Click on the "Start count!" button above to start the timer. The input field will count forever, starting at 0. Click on the "Stop count!" button to stop the counting. </p></body></html>
Other Archives
[edit]sortkeys / sorthashvalue
[edit]- sortkeys
// returns the sorted keys given a hash Array // equivalent to "foreach $v (sort(keys(%src)))" in perl // Use this to sort a normal "for (i in array); -> for (i in sortkeys(array));" // Rev2: improved version. Can assign "hh=sortkeys(hh);" function sortkeys(src, fun) { // fun is the sort function. optional var nv = new Array(); var nvh = new Array(); // works ok bec of "closure" var i; for (i in src) nv.push(i); if(fun==undefined) { nv.sort(); } else { nv.sort(fun); } for (i in nv) { nvh[nv[i]]=src[nv[i]]; // Now transfer it to the keys } return(nvh); }
- sorthashvalue
// returns the sorted values. // DOES NOT modify the src array // e.g. aa["z"]=9; aa["zz"]=8; aa["a"]=2; for (i in sorthashvalue(aa)) { print(i); } // RETURNS 2, 8, 9 // Rev1: initial rev function sorthashvalue(src, fun) { // fun is the sort function. optional var nv = new Array(); var nvh = new Array(); // works ok bec of "closure" var cnt=0; var i; for (i in src) { nv[cnt++]=src[i]; } if(fun==undefined) { nv.sort(); } else { nv.sort(fun); } for (i in nv) { nvh[nv[i]]=1; // Now transfer it to the keys } return(nvh); }