{"id":59912,"date":"2023-06-28T03:01:09","date_gmt":"2023-06-27T17:01:09","guid":{"rendered":"http:\/\/www.rjmprogramming.com.au\/ITblog\/?p=59912"},"modified":"2023-11-06T19:55:38","modified_gmt":"2023-11-06T09:55:38","slug":"making-of-user-interactive-entry-dynamically-controlled-javascript-parameterization-tutorial","status":"publish","type":"post","link":"https:\/\/www.rjmprogramming.com.au\/ITblog\/making-of-user-interactive-entry-dynamically-controlled-javascript-parameterization-tutorial\/","title":{"rendered":"Making of User Interactive Entry Dynamically Controlled Javascript Parameterization Tutorial"},"content":{"rendered":"<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/rjmgoogleimages.htm\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Making of User Interactive Entry Dynamically Controlled Javascript Parameterization Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/change_js_parameters_more.jpg\" title=\"Making of User Interactive Entry Dynamically Controlled Javascript Parameterization Tutorial\"  style=\"float:left;\"  \/><\/a><p class=\"wp-caption-text\">Making of User Interactive Entry Dynamically Controlled Javascript Parameterization Tutorial<\/p><\/div>\n<p>In yesterday&#8217;s <a title='User Interactive Entry Dynamically Controlled Javascript Parameterization Tutorial' href='#uiedcjpt'>User Interactive Entry Dynamically Controlled Javascript Parameterization Tutorial<\/a> we constructed a &#8220;p&#8221; paragraph element as below, where hovering over &#8220;<span style=text-decoration:underline;>Nala<\/span>&#8221; or &#8220;<span style=text-decoration:underline;>Luna<\/span>&#8221; creates the relevant background image effect &#8230;<\/p>\n<p id=mypwtwo>It is, to us, a bit like our &#8220;hardcodings&#8221; become &#8220;variables&#8221; coding ways, around here, but maybe we feel like saying &#8220;parameter&#8221; today, because the &#8220;hardcodings&#8221; are numbers.  <font size=1>(Though <a target=_blank onmouseover=\"document.getElementById('mypwtwo').style.backgroundSize='contain'; document.getElementById('mypwtwo').style.backgroundRepeat='no-repeat'; document.getElementById('mypwtwo').style.backgroundImage='linear-gradient(rgba(255,255,255,0.3),rgba(255,255,255,0.3)),URL(\/\/www.rjmprogramming.com.au\/Android\/NalaLuna.jpg)';\" href='https:\/\/www.rjmprogramming.com.au\/Android\/NalaLuna.jpg'>Nala<\/a> thinks that it is because it is Monday, while <a target=_blank onmouseover=\"document.getElementById('mypwtwo').style.backgroundSize='contain'; document.getElementById('mypwtwo').style.backgroundRepeat='no-repeat'; \n document.getElementById('mypwtwo').style.backgroundImage='linear-gradient(rgba(255,255,255,0.3),rgba(255,255,255,0.3)),URL(\/\/www.rjmprogramming.com.au\/Android\/NalaLuna.jpg)';\" href='https:\/\/www.rjmprogramming.com.au\/Android\/NalaLuna.jpg'>Luna<\/a> thinks that Nala&#8217;s a day out.  But we digress &#8230; <a target=_blank title=? href='https:\/\/www.youtube.com\/watch?v=e9_7GcQeiqw&#038;t=2m37s'>again<\/a>.)<\/font><\/p>\n<p> &#8230; that looks, in HTML and inline Javascript, like &#8230;<\/p>\n<p><code style=font-size:10px;><br \/>\n&lt;p id=mypw&gt;It is, to us, a bit like our \"hardcodings\" become \"variables\" coding ways, around here, but maybe we feel like saying \"parameter\" today, because the \"hardcodings\" are numbers.  &lt;font size=1&gt;(Though &lt;a target=_blank onmouseover=\"document.getElementById('mypw').style.backgroundSize='contain'; document.getElementById('mypw').style.backgroundRepeat='no-repeat'; document.getElementById('mypw').style.backgroundImage='linear-gradient(rgba(255,255,255,0.3),rgba(255,255,255,0.3)),URL(\/\/www.rjmprogramming.com.au\/Android\/NalaLuna.jpg)';\" href='https:\/\/www.rjmprogramming.com.au\/Android\/NalaLuna.jpg'&gt;Nala&lt;\/a&gt; thinks that it is because it is Monday, while &lt;a target=_blank onmouseover=\"document.getElementById('mypw').style.backgroundSize='contain'; document.getElementById('mypw').style.backgroundRepeat='no-repeat'; document.getElementById('mypw').style.backgroundImage='linear-gradient(rgba(255,255,255,0.3),rgba(255,255,255,0.3)),URL(\/\/www.rjmprogramming.com.au\/Android\/NalaLuna.jpg)';\" href='https:\/\/www.rjmprogramming.com.au\/Android\/NalaLuna.jpg'&gt;Luna&lt;\/a&gt; thinks that Nala's a day out.  But we digress ... &lt;a target=_blank title=? href='https:\/\/www.youtube.com\/watch?v=e9_7GcQeiqw&t=2m37s'&gt;again&lt;\/a&gt;.)&lt;\/font&gt;&lt;\/p&gt;<br \/>\n<\/code><\/p>\n<p> &#8230; and got us wondering, as doing &#8220;display tricky&#8221; anything in HTML and Javascript and CSS can be apt to, what else can &#8220;add to entertainment&#8221;, or &#8220;the takeaway pizzazz factor&#8221;?  So we wrote an email to ourselves with two ideas &#8230;<\/p>\n<blockquote><p>\nRobert Metcalfe <rmetcalfe15@gmail.com><br \/>\n8:11\u202fAM (2 hours ago)<br \/>\nto me<br \/>\n<br \/>\nAt inline HTML event logic \u2026<br \/>\n<br \/>\nsetInterval function()<br \/>\nNew function huh() on the fly relied on from then on<br \/>\n<br \/>\nSent from my iPhone\n<\/p><\/blockquote>\n<p>A bit on the bolshy side, not having a question mark, because at the time we were reasonably sure of the first, but the second sounds like a big ask?!<\/p>\n<table id=mycomplextable>\n<tr>\n<th>Here&#8217;s our go at <font color=blue>&#8220;setInterval function()&#8221;<\/font> &#8230;<\/th>\n<\/tr>\n<tr>\n<td>\n<iframe scrolling=no style=width:100%;height:100px; src='\/\/www.rjmprogramming.com.au\/dyn_fns.html?sif=gasdaaa'><\/iframe><br \/>\n<!--p id=mypw_sif>It is, to us, a bit like our \"hardcodings\" become \"variables\" coding ways, around here, but maybe we feel like saying \"parameter\" today, because the \"hardcodings\" are numbers.  <font size=1>(Though <a target=_blank onmouseover=\"document.getElementById('mypw_sif').style.backgroundSize='contain'; document.getElementById('mypw_sif').style.backgroundRepeat='no-repeat'; document.getElementById('mypw_sif').style.backgroundImage='linear-gradient(rgba(255,255,255,0.3),rgba(255,255,255,0.3)),URL(\/\/www.rjmprogramming.com.au\/Android\/NalaLuna.jpg)'; if (document.getElementById('mypw_sif').outerHTML.indexOf(' data-') == -1) { document.getElementById('mypw_sif').setAttribute('data-x',0); } setInterval(function(event) {  document.getElementById('mypw_sif').setAttribute('data-x',eval(5 + eval(document.getElementById('mypw_sif').getAttribute('data-x'))) ); document.getElementById('mypw_sif').style.backgroundPosition='' + eval(eval(document.getElementById('mypw_sif').getAttribute('data-x')) % screen.width) + ' 0'; }, 1000); \" href='https:\/\/www.rjmprogramming.com.au\/Android\/NalaLuna.jpg'>Nala<\/a> thinks that it is because it is Monday, while <a target=_blank onmouseover=\"document.getElementById('mypw_sif').style.backgroundSize='contain'; document.getElementById('mypw_sif').style.backgroundRepeat='no-repeat';  document.getElementById('mypw_sif').style.backgroundImage='linear-gradient(rgba(255,255,255,0.3),rgba(255,255,255,0.3)),URL(\/\/www.rjmprogramming.com.au\/Android\/NalaLuna.jpg)'; if (document.getElementById('mypw_sif').outerHTML.indexOf(' data-') == -1) { document.getElementById('mypw_sif').setAttribute('data-x',0); } setInterval(function(event) {  document.getElementById('mypw_sif').setAttribute('data-x',eval(5 + eval(document.getElementById('mypw_sif').getAttribute('data-x'))) ); document.getElementById('mypw_sif').style.backgroundPosition='' + eval(eval(document.getElementById('mypw_sif').getAttribute('data-x')) % screen.width) + ' 0'; }, 1000); \" href='https:\/\/www.rjmprogramming.com.au\/Android\/NalaLuna.jpg'>Luna<\/a> thinks that Nala's a day out.  But we digress ... <a target=_blank title=? href='https:\/\/www.youtube.com\/watch?v=e9_7GcQeiqw&t=2m37s'>again<\/a>.)<\/font><\/p-->\n<\/td>\n<\/tr>\n<tr>\n<td>\n<code style=font-size:9px;><br \/>\n&lt;p id=mypw&gt;It is, to us, a bit like our \"hardcodings\" become \"variables\" coding ways, around here, but maybe we feel like saying \"parameter\" today, because the \"hardcodings\" are numbers.  &lt;font size=1&gt;(Though &lt;a target=_blank onmouseover=\"document.getElementById('mypw').style.backgroundSize='contain'; document.getElementById('mypw').style.backgroundRepeat='no-repeat'; document.getElementById('mypw').style.backgroundImage='linear-gradient(rgba(255,255,255,0.3),rgba(255,255,255,0.3)),URL(\/\/www.rjmprogramming.com.au\/Android\/NalaLuna.jpg)'; if (document.getElementById('mypw').outerHTML.indexOf(' data-') == -1) { document.getElementById('mypw').setAttribute('data-x',0); } <font color=blue>setInterval(function(event) {  document.getElementById('mypw').setAttribute('data-x',eval(5 + eval(document.getElementById('mypw').getAttribute('data-x'))) ); document.getElementById('mypw').style.backgroundPosition='' + eval(eval(document.getElementById('mypw').getAttribute('data-x')) % screen.width) + ' 0'; }, 1000);<\/font> \" href='https:\/\/www.rjmprogramming.com.au\/Android\/NalaLuna.jpg'&gt;Nala&lt;\/a&gt; thinks that it is because it is Monday, while &lt;a target=_blank onmouseover=\"document.getElementById('mypw').style.backgroundSize='contain'; document.getElementById('mypw').style.backgroundRepeat='no-repeat';  document.getElementById('mypw').style.backgroundImage='linear-gradient(rgba(255,255,255,0.3),rgba(255,255,255,0.3)),URL(\/\/www.rjmprogramming.com.au\/Android\/NalaLuna.jpg)'; if (document.getElementById('mypw').outerHTML.indexOf(' data-') == -1) { document.getElementById('mypw').setAttribute('data-x',0); } <font color=blue>setInterval(function(event) {  document.getElementById('mypw').setAttribute('data-x',eval(5 + eval(document.getElementById('mypw').getAttribute('data-x'))) ); document.getElementById('mypw').style.backgroundPosition='' + eval(eval(document.getElementById('mypw').getAttribute('data-x')) % screen.width) + ' 0'; }, 1000);<\/font> \" href='https:\/\/www.rjmprogramming.com.au\/Android\/NalaLuna.jpg'&gt;Luna&lt;\/a&gt; thinks that Nala's a day out.  But we digress ... &lt;a target=_blank title=? href='https:\/\/www.youtube.com\/watch?v=e9_7GcQeiqw&t=2m37s'&gt;again&lt;\/a&gt;.)&lt;\/font&gt;&lt;\/p&gt;<br \/>\n<\/code>\n<\/td>\n<\/tr>\n<tr>\n<th> &#8230; and here&#8217;s our go at <font color=purple>&#8220;New function huh() on the fly relied on from then on&#8221;<\/font> &#8230;<\/th>\n<\/tr>\n<tr>\n<td>\n<iframe scrolling=no style=width:100%;height:100px; src='\/\/www.rjmprogramming.com.au\/dyn_fns.html?fis=gasdaaa'><\/iframe><br \/>\n<!--p id=mypw_fis>It is, to us, a bit like our \"hardcodings\" become \"variables\" coding ways, around here, but maybe we feel like saying \"parameter\" today, because the \"hardcodings\" are numbers.  <font size=1>(Though <a target=_blank onmouseover=\"document.getElementById('mypw_fis').style.backgroundSize='contain'; document.getElementById('mypw_fis').style.backgroundRepeat='no-repeat'; document.getElementById('mypw_fis').style.backgroundImage='linear-gradient(rgba(255,255,255,0.3),rgba(255,255,255,0.3)),URL(\/\/www.rjmprogramming.com.au\/Android\/NalaLuna.jpg)'; if (this.outerHTML.indexOf(' data-') == -1) { this.setAttribute('data-x',0); } if (typeof myomof != 'function') { myomof = function(event) { document.getElementById('mypw_fis').setAttribute('data-x',eval(5 + eval(document.getElementById('mypw_fis').getAttribute('data-x'))) ); document.getElementById('mypw_fis').style.backgroundPosition='' + eval(eval(document.getElementById('mypw_fis').getAttribute('data-x')) % screen.width) + ' 0'; }; } setInterval(myomof, 1000); \" href='https:\/\/www.rjmprogramming.com.au\/Android\/NalaLuna.jpg'>Nala<\/a> thinks that it is because it is Monday, while <a target=_blank onmouseover=\"document.getElementById('mypw_fis').style.backgroundSize='contain'; document.getElementById('mypw_fis').style.backgroundRepeat='no-repeat'; document.getElementById('mypw_fis').style.backgroundImage='linear-gradient(rgba(255,255,255,0.3),rgba(255,255,255,0.3)),URL(\/\/www.rjmprogramming.com.au\/Android\/NalaLuna.jpg)'; if (this.outerHTML.indexOf(' data-') == -1) { this.setAttribute('data-x',0); } if (typeof myomof != 'function') { myomof = function(event) { document.getElementById('mypw_fis').setAttribute('data-x',eval(5 + eval(document.getElementById('mypw_fis').getAttribute('data-x'))) ); document.getElementById('mypw_fis').style.backgroundPosition='' + eval(eval(document.getElementById('mypw_fis').getAttribute('data-x')) % screen.width) + ' 0'; }; } setInterval(myomof, 1000); \" href='https:\/\/www.rjmprogramming.com.au\/Android\/NalaLuna.jpg'>Luna<\/a> thinks that Nala's a day out.  But we digress ... <a target=_blank title=? href='https:\/\/www.youtube.com\/watch?v=e9_7GcQeiqw&t=2m37s'>again<\/a>.)<\/font><\/p-->\n<\/td>\n<\/tr>\n<tr>\n<td>\n<code style=font-size:9px;><br \/>\n&lt;p id=mypw&gt;It is, to us, a bit like our \"hardcodings\" become \"variables\" coding ways, around here, but maybe we feel like saying \"parameter\" today, because the \"hardcodings\" are numbers.  &lt;font size=1&gt;(Though &lt;a target=_blank onmouseover=\"document.getElementById('mypw').style.backgroundSize='contain'; document.getElementById('mypw').style.backgroundRepeat='no-repeat'; document.getElementById('mypw').style.backgroundImage='linear-gradient(rgba(255,255,255,0.3),rgba(255,255,255,0.3)),URL(\/\/www.rjmprogramming.com.au\/Android\/NalaLuna.jpg)'; if (this.outerHTML.indexOf(' data-') == -1) { this.setAttribute('data-x',0); } <font color=purple>if (typeof myomof != 'function') { myomof = function(event) { document.getElementById('mypw').setAttribute('data-x',eval(5 + eval(document.getElementById('mypw').getAttribute('data-x'))) ); document.getElementById('mypw').style.backgroundPosition='' + eval(eval(document.getElementById('mypw').getAttribute('data-x')) % screen.width) + ' 0'; }; } setInterval(myomof, 1000);<\/font> \" href='https:\/\/www.rjmprogramming.com.au\/Android\/NalaLuna.jpg'&gt;Nala&lt;\/a&gt; thinks that it is because it is Monday, while &lt;a target=_blank onmouseover=\"document.getElementById('mypw').style.backgroundSize='contain'; document.getElementById('mypw').style.backgroundRepeat='no-repeat'; document.getElementById('mypw').style.backgroundImage='linear-gradient(rgba(255,255,255,0.3),rgba(255,255,255,0.3)),URL(\/\/www.rjmprogramming.com.au\/Android\/NalaLuna.jpg)'; if (this.outerHTML.indexOf(' data-') == -1) { this.setAttribute('data-x',0); } <font color=purple>if (typeof myomof != 'function') { myomof = function(event) { document.getElementById('mypw').setAttribute('data-x',eval(5 + eval(document.getElementById('mypw').getAttribute('data-x'))) ); document.getElementById('mypw').style.backgroundPosition='' + eval(eval(document.getElementById('mypw').getAttribute('data-x')) % screen.width) + ' 0'; }; } setInterval(myomof, 1000);<\/font> \" href='https:\/\/www.rjmprogramming.com.au\/Android\/NalaLuna.jpg'&gt;Luna&lt;\/a&gt; thinks that Nala's a day out.  But we digress ... &lt;a target=_blank title=? href='https:\/\/www.youtube.com\/watch?v=e9_7GcQeiqw&t=2m37s'&gt;again&lt;\/a&gt;.)&lt;\/font&gt;&lt;\/p&gt;<br \/>\n<\/code>\n<\/td>\n<\/tr>\n<\/table>\n<p><iframe scrolling=no style=width:100%;height:200px; src='\/\/www.rjmprogramming.com.au\/dyn_fns.html?mypba=gasdaaa'><\/iframe><br \/>\n<!--p>Big ask, but okay, showing a lot of flexibility within Javascript!  And is that <font color=purple>myomof<\/font> existant, even at the document.body event.  You can take our word for that, with our testing, or <a style=cursor:pointer;text-decoration:underline; onclick=\"var wwb=document.getElementById('complextable').outerHTML, wblurb='Uncaught ReferenceError: myomof is not defined at onload (this.html:2:26)', woy=window.open('','_blank','top=50,left=50,width=500,height=600'); woy.document.write(decodeURIComponent(encodeURIComponent('<html><head><script type=text\/javascript> function huhld() { try { alert(String.fromCharCode(32).trim() + myomof()); } catch(anerr) { alert(' + String.fromCharCode(39) + wblurb + String.fromCharCode(39) + ');    } } setTimeout(huhld,100); <\/script><\/head><body data-onload=huhld();>') + encodeURIComponent(wwb));\">click here<\/a> to simulate a document.body onload event call of <font color=purple>myomof<\/font> function.<\/p-->\n<p>Interesting, huh?!<\/p>\n<p><!--p>You can also see this play out at WordPress 4.1.1's <a target=_blank  href='\/\/www.rjmprogramming.com.au\/ITblog\/making-of-user-interactive-entry-dynamically-controlled-javascript-parameterization-tutorial\/'>Making of User Interactive Entry Dynamically Controlled Javascript Parameterization Tutorial<\/a>.<\/p-->\n<hr>\n<p id='uiedcjpt'>Previous relevant <a target=_blank title='User Interactive Entry Dynamically Controlled Javascript Parameterization Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/user-interactive-entry-dynamically-controlled-javascript-parameterization-tutorial\/'>User Interactive Entry Dynamically Controlled Javascript Parameterization Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/rjmgoogleimages.htm\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"User Interactive Entry Dynamically Controlled Javascript Parameterization Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/change_js_parameters.jpg\" title=\"User Interactive Entry Dynamically Controlled Javascript Parameterization Tutorial\"  style=\"float:left;\"  \/><\/a><p class=\"wp-caption-text\">User Interactive Entry Dynamically Controlled Javascript Parameterization Tutorial<\/p><\/div>\n<p>Today we wanted to nuance the capabilities of yesterday&#8217;s <a title='User Interactive Entry Dynamically Controlled Javascript Primer Tutorial' href='#uiedcjpxt'>User Interactive Entry Dynamically Controlled Javascript Primer Tutorial<\/a>&#8216;s &#8220;proof of concept&#8221; feel to dynamic Javascript webpage content control with a &#8220;parameterization&#8221; phase.  How does <a target=_blank title='Parameter information from Wikipedia ... thanks' href='https:\/\/en.wikipedia.org\/wiki\/Parameter'>Wikipedia<\/a> describe parameter?  They say &#8230;<\/p>\n<blockquote cite='https:\/\/en.wikipedia.org\/wiki\/Parameter'><p>\nA parameter (from Ancient Greek \u03c0\u03b1\u03c1\u03ac (par\u00e1) &#8216;beside, subsidiary&#8217;, and \u03bc\u03ad\u03c4\u03c1\u03bf\u03bd (m\u00e9tron) &#8216;measure&#8217;), generally, is any characteristic that can help in defining or classifying a particular system (meaning an event, project, object, situation, etc.). That is, a parameter is an element of a system that is useful, or critical, when identifying the system, or when evaluating its performance, status, condition, etc.\n<\/p><\/blockquote>\n<p> &#8230; to which, we&#8217;d add, of course &#8230;<\/p>\n<blockquote onclick=\"window.open('\/\/www.youtube.com\/watch?v=1JHH6iwgIek','_blank','top=50,left=50,width=600,height=600');\" style=cursor:pointer;><p>\netc. etc.\n<\/p><\/blockquote>\n<p> &#8230; but we digress.<\/p>\n<p id=mypw>It is, to us, a bit like our &#8220;hardcodings&#8221; become &#8220;variables&#8221; coding ways, around here, but maybe we feel like saying &#8220;parameter&#8221; today, because the &#8220;hardcodings&#8221; are numbers.  <font size=1>(Though <a target=_blank onmouseover=\"document.getElementById('mypw').style.backgroundSize='contain'; document.getElementById('mypw').style.backgroundRepeat='no-repeat'; document.getElementById('mypw').style.backgroundImage='linear-gradient(rgba(255,255,255,0.3),rgba(255,255,255,0.3)),URL(\/\/www.rjmprogramming.com.au\/Android\/NalaLuna.jpg)';\" href='https:\/\/www.rjmprogramming.com.au\/Android\/NalaLuna.jpg'>Nala<\/a> thinks that it is because it is Monday, while <a target=_blank onmouseover=\"document.getElementById('mypw').style.backgroundSize='contain'; document.getElementById('mypw').style.backgroundRepeat='no-repeat'; \n document.getElementById('mypw').style.backgroundImage='linear-gradient(rgba(255,255,255,0.3),rgba(255,255,255,0.3)),URL(\/\/www.rjmprogramming.com.au\/Android\/NalaLuna.jpg)';\" href='https:\/\/www.rjmprogramming.com.au\/Android\/NalaLuna.jpg'>Luna<\/a> thinks that Nala&#8217;s a day out.  But we digress &#8230; <a target=_blank title=? href='https:\/\/www.youtube.com\/watch?v=e9_7GcQeiqw&#038;t=2m37s'>again<\/a>.)<\/font><\/p>\n<p>You can see this with <font color=olive><a style=color:olive; target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/fix_javascript_later.js_GETME\">the changed<\/a><\/font> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/fix_javascript_later.js-GETME\">fix_javascript_later.js<\/a> &#8230;<\/p>\n<p><code><br \/>\n\/\/ fix_javascript_later.js<br \/>\n\/\/ RJM Programming<br \/>\n\/\/ June, 2023<br \/>\n<br \/>\n  var inithih='';<br \/>\n  var fncodes=[], fncodenames=[''];<br \/>\n  var fixoo=null, fixooih='', visword='hidden', vist=0, lasttvn=0;<br \/>\n  <font color=olive>var startthousand=5000;<br \/>\n  var ongoingsecs=15<\/font>;<br \/>\n  var leftpos='calc(50% - 100px)', toppos='calc(50% - 100px)';<br \/>\n <br \/> <br \/>\n  var lposx=(document.URL<font color=olive>.split('#')[0] + '&amp;'<\/font> + document.head.innerHTML).split('left' + 'pos=');<br \/>\n  var tposx=(document.URL<font color=olive>.split('#')[0] + '&amp;'<\/font> + document.head.innerHTML).split('top' + 'pos=');<br \/>\n  <font color=olive>var stx=(document.URL.split('#')[0] + '&amp;' + document.head.innerHTML).split('sta' + 'rtsecs=');<br \/>\n  var osx=(document.URL.split('#')[0] + '&amp;' + document.head.innerHTML).split('ongoi' + 'ngsecs=');<\/font><br \/>\n  <br \/>\n  if (eval('' + lposx.length) &gt; 1) {  leftpos=decodeURIComponent(lposx[1].split('&')[0].split(\"'\")[0].split('\"')[0]);   }<br \/>\n  if (eval('' + tposx.length) &gt; 1) {  toppos=decodeURIComponent(tposx[1].split('&')[0].split(\"'\")[0].split('\"')[0]);   }<br \/>\n  <font color=olive>if (eval('' + stx.length) &gt; 1) {  startthousand=Math.round(eval(1000.0 * eval('' + decodeURIComponent(stx[1].split('&')[0].split(\"'\")[0].split('\"')[0]))));   }<br \/>\n  if (eval('' + osx.length) &gt; 1) {  ongoingsecs=Math.round(eval(1.0 * eval('' + decodeURIComponent(osx[1].split('&')[0].split(\"'\")[0].split('\"')[0]))));   }<\/font><br \/>\n  <br \/>\n  function resetc() {<br \/>\n    vist=0;<br \/>\n    visword='hidden';<br \/>\n    document.getElementById('dbnmt').style.visibility='visible';<br \/>\n    document.getElementById('mypgr').value='' + vist;<br \/>\n  }<br \/>\n  <br \/>\n  function postscourjs(tvn) {<br \/>\n    resetc();<br \/>\n    lasttvn=eval('' + tvn);<br \/>\n    if (eval('' + tvn) &lt; 0) {<br \/>\n    document.getElementById('djta').innerHTML='&lt;textarea style=background-color:pink; onresize=resetc(); onchange=resetc(); onfocus=resetc(); onclick=resetc(); onblur=fix_the_js(this); id=jta&gt;async function ' + fncodes[eval(('' + tvn).replace('-',''))].split('&lt;\/script&gt;')[0] + '&lt;\/textarea&gt;';<br \/>\n    \/\/alert('async function ' + fncodes[eval(('' + tvn).replace('-',''))]);<br \/>\n    } else {<br \/>\n    document.getElementById('djta').innerHTML='&lt;textarea style=background-color:pink; onresize=resetc(); onchange=resetc(); onfocus=resetc(); onclick=resetc(); onblur=fix_the_js(this); id=jta&gt;function ' + fncodes[eval(('' + tvn).replace('-',''))].split('&lt;\/script&gt;')[0] + '&lt;\/textarea&gt;';<br \/>\n    \/\/alert('function ' + fncodes[eval(('' + tvn).replace('-',''))]);<br \/>\n    }<br \/>\n  }<br \/>\n<br \/>\n  function scourjs() {<br \/>\n    var ibn=0;<br \/>\n    if (inithih == '') {<br \/>\n       inithih=document.head.innerHTML;<br \/>\n       fncodes=inithih.split('function ');<br \/>\n       for (ibn=1; ibn&lt;fncodes.length; ibn++) {<br \/>\n         if ((fncodes[eval(-1 + ibn)].trim() + '~~').indexOf('async~~') != -1) {<br \/>\n         fncodenames.push('async ' + fncodes[ibn].split('(')[0].trim());<br \/>\n         } else {<br \/>\n         fncodenames.push(fncodes[ibn].split('(')[0].trim());<br \/>\n         }<br \/>\n       }<br \/>\n       if (eval('' + fncodes.length) &gt; 1) {<br \/>\n         fixooih='&lt;div title=\"Double click to resurrect.\" ondblclick=\"putback();\" id=dbnmt style=\"position:absolute;z-index:123;opacity:0.5;left:' + leftpos + ';top:' + toppos + ';border:5px dashed green;\"&gt;&lt;h3&gt;Optionally change Javascript ...&lt;\/h3&gt;&lt;br&gt;&lt;br&gt;&lt;progress id=mypgr min=0 max=<font color=olive>' + ongoingsecs + '<\/font> value=0&gt;&lt;\/progress&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;button id=bnmt onclick=bnmt(); style=background-color:orange;&gt;No More Thanks&lt;\/button&gt;<font color=olive>&amp;nbsp;&lt;button id=bos title=\"Click to change interval, in seconds, between visibility toggling.\" onclick=changeos(this); style=background-color:lightblue;&gt;Ongoing Seconds ' + ongoingsecs + '&lt;\/button&gt;<\/font>&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;select style=background-color:yellow; onresize=resetc(); id=jcsel onchange=postscourjs(this.value);&gt;&lt;option value=\"\"&gt;Javascript function definitions ...&lt;\/option&gt;&lt;\/select&gt;&lt;br&gt;&lt;br&gt;&lt;div id=djta&gt;&lt;textarea style=background-color:pink; onresize=resetc(); onchange=resetc(); onfocus=resetc(); onclick=resetc(); onblur=fix_the_js(this); id=jta&gt;&lt;\/textarea&gt;&lt;\/div&gt;&lt;\/div&gt;';<br \/>\n         for (ibn=1; ibn&lt;fncodes.length; ibn++) {<br \/>\n           if (fncodenames[ibn].trim() != fncodenames[ibn]) {<br \/>\n           fixooih=fixooih.replace('&lt;\/select&gt;', '&lt;option value=\"-' + ibn + '\"&gt;async function ' + fncodes[ibn].split(')')[0] + ')&lt;\/option&gt;&lt;\/select&gt;');<br \/>\n           } else {<br \/>\n           fixooih=fixooih.replace('&lt;\/select&gt;', '&lt;option value=' + ibn + '&gt;function ' + fncodes[ibn].split(')')[0] + ')&lt;\/option&gt;&lt;\/select&gt;');<br \/>\n           }<br \/>\n         }<br \/>\n         document.body.innerHTML+=fixooih;<br \/>\n         fixooih=fixooih.replace('0.5','1.0');<br \/>\n         setTimeout(vistog, 1000);<br \/>\n       } else {<br \/>\n         inithih='';<br \/>\n       }<br \/>\n    }<br \/>\n    <font color=olive>if (startthousand &lt;= 0) { document.getElementById('bnmt').click(); }<\/font><br \/>\n  }<br \/>\n  <br \/>\n  <font color=olive>function changeos(obu) {<br \/>\n   resetc();<br \/>\n   var newos=prompt('Seconds to wait between visibility toggling.', '' + ongoingsecs);<br \/>\n   if (newos == null) { newos=''; }<br \/>\n   if (newos.trim() != '') {<br \/>\n     var wasos=ongoingsecs;<br \/>\n     try {<br \/>\n       ongoingsecs=eval('' + newos);<br \/>\n     } catch(fgsds) {<br \/>\n       ongoingsecs=wasos;<br \/>\n     }<br \/>\n     if (document.getElementById('mypgr')) {<br \/>\n        document.getElementById('mypgr').max=ongoingsecs;<br \/>\n        obu.innerHTML='Ongoing Seconds ' + ongoingsecs;<br \/>\n     }<br \/>\n   }<br \/>\n  }<\/font><br \/>\n  <br \/>\n  function putback() {<br \/>\n   vist=0;<br \/>\n   document.getElementById('dbnmt').innerHTML=fixooih;<br \/>\n   document.getElementById('dbnmt').style.zIndex=123;<br \/>\n   visword='hidden';<br \/>\n   setTimeout(vistog, 1000);<br \/>\n  }<br \/>\n  <br \/>\n  function vistog() {<br \/>\n    if (document.getElementById('mypgr')) {<br \/>\n    setTimeout(vistog, 1000);<br \/>\n    vist++;<br \/>\n    document.getElementById('mypgr').value='' + vist;<br \/>\n    if (vist &gt;= <font color=olive>ongoingsecs<\/font>) {<br \/>\n      if (visword == 'hidden') {<br \/>\n        <font color=olive>document.getElementById('dbnmt').style.cursor='pointer';<\/font><br \/>\n        visword='visible';<br \/>\n      } else {<br \/>\n        <font color=olive>document.getElementById('dbnmt').style.cursor='progress';<\/font><br \/>\n        visword='hidden';<br \/>\n      }<br \/>\n      document.getElementById('dbnmt').style.visibility=visword;<br \/>\n      vist=0;<br \/>\n    }<br \/>\n    }<br \/>\n  }<br \/>\n  <br \/>\n  function bnmt() {<br \/>\n    document.getElementById('dbnmt').innerHTML='';<br \/>\n    \/\/document.getElementById('dbnmt').style.zIndex=-786;<br \/>\n  }<br \/>\n  <br \/> <br \/>\n  function fix_the_js(ota) {<br \/>\n      var tag = document.createElement('script');<br \/>\n      tag.innerHTML = ota.value;<br \/>\n      fncodes[lasttvn]=ota.value;<br \/>\n      var firstScriptTag = document.getElementsByTagName('script')[eval(-1 + document.getElementsByTagName('script').length)];<br \/>\n      firstScriptTag.insertAdjacentElement(\"afterend\", tag);<br \/>\n  }<br \/>\n<br \/>\n  if (startthousand &lt;= 0) {<br \/>\n  scourjs();<br \/>\n  } else {<br \/>\n  setTimeout(scourjs, <font color=olive>startthousand<\/font>);<br \/>\n  }<br \/>\n  <\/code><\/p>\n<p> &#8230; used by <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/rjmgoogleimages.htm\" title=\"Click picture\">the same web application as for yesterday<\/a> and <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/rjmgoogleimages.htm?ongoingsecs=50\" title=\"Click picture\">the same web application as for yesterday having toggling changes every 50 seconds<\/a>.<\/p>\n<p><!--p>You can also see this play out at WordPress 4.1.1's <a target=_blank  href='\/\/www.rjmprogramming.com.au\/ITblog\/new-user-interactive-entry-dynamically-controlled-javascript-parameterization-tutorial\/'>User Interactive Entry Dynamically Controlled Javascript Parameterization Tutorial<\/a>.<\/p-->\n<hr>\n<p id='uiedcjpxt'>Previous relevant <a target=_blank title='User Interactive Entry Dynamically Controlled Javascript Primer Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/user-interactive-entry-dynamically-controlled-javascript-primer-tutorial\/'>User Interactive Entry Dynamically Controlled Javascript Primer Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/rjmgoogleimages.htm\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"User Interactive Entry Dynamically Controlled Javascript Primer Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/change_js.jpg\" title=\"User Interactive Entry Dynamically Controlled Javascript Primer Tutorial\"  style=\"float:left;\"  \/><\/a><p class=\"wp-caption-text\">User Interactive Entry Dynamically Controlled Javascript Primer Tutorial<\/p><\/div>\n<p>We&#8217;re combining the work of two different recent tutorials, today, in our efforts to code for an external Javascript tool to allow a web application, just via the calling of this external Javascript, clientside functionality whereby the user can dynamically change (effectively <i>override<\/i>) Javascript code well after the document.body onload event&#8217;s passing &#8230;<\/p>\n<ol>\n<li>yesterday&#8217;s <a target=_blank href='https:\/\/www.rjmprogramming.com.au\/ITblog\/html-form-use-of-disabled-input-elements-tutorial\/' title='HTML Form Use of Disabled Input Elements Tutorial'>HTML Form Use of Disabled Input Elements Tutorial<\/a>&#8216;s establishment of a methodology to <i>override<\/i> Javascript functions dynamically via user interactive entry<\/li>\n<li>the recent <a target=_blank href='https:\/\/www.rjmprogramming.com.au\/ITblog\/blog-kaleidoscopic-view-detail-tutorial\/' title='Blog Kaleidoscopic View Detail Tutorial'>Blog Kaleidoscopic View Detail Tutorial<\/a>&#8216;s web application, as a candidate &#8220;parent&#8221; calling our &#8220;tool&#8221; via &#8230;<br \/>\n<code><br \/>\n&lt;script type=text\/javascript src='\/fix_javascript_later.js?leftpos=60%25&toppos=30%25'&gt;&lt;\/script&gt;<br \/>\n<\/code>\n<\/li>\n<\/ol>\n<p> &#8230; via &#8220;tool&#8221; external Javascript <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/fix_javascript_later.js_GETME\">fix_javascript_later.js<\/a> (proof of concept, first draft) code, so far, which looks like &#8230;<\/p>\n<p><code><br \/>\n\/\/ fix_javascript_later.js<br \/>\n\/\/ RJM Programming<br \/>\n\/\/ June, 2023<br \/>\n<br \/>\n  var inithih='';<br \/>\n  var fncodes=[], fncodenames=[''];<br \/>\n  var fixoo=null, fixooih='', visword='hidden', vist=0, lasttvn=0;<br \/>\n  var leftpos='calc(50% - 100px)', toppos='calc(50% - 100px)';<br \/>\n  <br \/>\n  var lposx=(document.URL + document.head.innerHTML).split('left' + 'pos=');<br \/>\n  var tposx=(document.URL + document.head.innerHTML).split('top' + 'pos=');<br \/>\n  <br \/>\n  if (eval('' + lposx.length) &gt; 1) {  leftpos=decodeURIComponent(lposx[1].split('&')[0].split(\"'\")[0].split('\"')[0]);   }<br \/>\n  if (eval('' + tposx.length) &gt; 1) {  toppos=decodeURIComponent(tposx[1].split('&')[0].split(\"'\")[0].split('\"')[0]);   }<br \/>\n  <br \/>\n  function resetc() {<br \/>\n    vist=0;<br \/>\n    visword='hidden';<br \/>\n    document.getElementById('dbnmt').style.visibility='visible';<br \/>\n    document.getElementById('mypgr').value='' + vist;<br \/>\n  }<br \/>\n  <br \/>\n  function postscourjs(tvn) {<br \/>\n    resetc();<br \/>\n    lasttvn=eval('' + tvn);<br \/>\n    if (eval('' + tvn) &lt; 0) {<br \/>\n    document.getElementById('djta').innerHTML='&lt;textarea style=background-color:pink; onresize=resetc(); onchange=resetc(); onfocus=resetc(); onclick=resetc(); onblur=fix_the_js(this); id=jta&gt;async function ' + fncodes[eval(('' + tvn).replace('-',''))].split('&lt;\/script&gt;')[0] + '&lt;\/textarea&gt;';<br \/>\n    \/\/alert('async function ' + fncodes[eval(('' + tvn).replace('-',''))]);<br \/>\n    } else {<br \/>\n    document.getElementById('djta').innerHTML='&lt;textarea style=background-color:pink; onresize=resetc(); onchange=resetc(); onfocus=resetc(); onclick=resetc(); onblur=fix_the_js(this); id=jta&gt;function ' + fncodes[eval(('' + tvn).replace('-',''))].split('&lt;\/script&gt;')[0] + '&lt;\/textarea&gt;';<br \/>\n    \/\/alert('function ' + fncodes[eval(('' + tvn).replace('-',''))]);<br \/>\n    }<br \/>\n  }<br \/>\n<br \/>\n  function scourjs() {<br \/>\n    var ibn=0;<br \/>\n    if (inithih == '') {<br \/>\n       inithih=document.head.innerHTML;<br \/>\n       fncodes=inithih.split('function ');<br \/>\n       for (ibn=1; ibn&lt;fncodes.length; ibn++) {<br \/>\n         if ((fncodes[eval(-1 + ibn)].trim() + '~~').indexOf('async~~') != -1) {<br \/>\n         fncodenames.push('async ' + fncodes[ibn].split('(')[0].trim());<br \/>\n         } else {<br \/>\n         fncodenames.push(fncodes[ibn].split('(')[0].trim());<br \/>\n         }<br \/>\n       }<br \/>\n       if (eval('' + fncodes.length) &gt; 1) {<br \/>\n         fixooih='&lt;div title=\"Double click to resurrect.\" ondblclick=\"putback();\" id=dbnmt style=\"position:absolute;z-index:123;opacity:0.5;left:' + leftpos + ';top:' + toppos + ';border:5px dashed green;\"&gt;&lt;h3&gt;Optionally change Javascript ...&lt;\/h3&gt;&lt;br&gt;&lt;br&gt;&lt;progress id=mypgr min=0 max=15 value=0&gt;&lt;\/progress&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;button id=bnmt onclick=bnmt(); style=background-color:orange;&gt;No More Thanks&lt;\/button&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;select style=background-color:yellow; onresize=resetc(); id=jcsel onchange=postscourjs(this.value);&gt;&lt;option value=\"\"&gt;Javascript function definitions ...&lt;\/option&gt;&lt;\/select&gt;&lt;br&gt;&lt;br&gt;&lt;div id=djta&gt;&lt;textarea style=background-color:pink; onresize=resetc(); onchange=resetc(); onfocus=resetc(); onclick=resetc(); onblur=fix_the_js(this); id=jta&gt;&lt;\/textarea&gt;&lt;\/div&gt;&lt;\/div&gt;';<br \/>\n         for (ibn=1; ibn&lt;fncodes.length; ibn++) {<br \/>\n           if (fncodenames[ibn].trim() != fncodenames[ibn]) {<br \/>\n           fixooih=fixooih.replace('&lt;\/select&gt;', '&lt;option value=\"-' + ibn + '\"&gt;async function ' + fncodes[ibn].split(')')[0] + ')&lt;\/option&gt;&lt;\/select&gt;');<br \/>\n           } else {<br \/>\n           fixooih=fixooih.replace('&lt;\/select&gt;', '&lt;option value=' + ibn + '&gt;function ' + fncodes[ibn].split(')')[0] + ')&lt;\/option&gt;&lt;\/select&gt;');<br \/>\n           }<br \/>\n         }<br \/>\n         document.body.innerHTML+=fixooih;<br \/>\n         fixooih=fixooih.replace('0.5','1.0');<br \/>\n         setTimeout(vistog, 1000);<br \/>\n       } else {<br \/>\n         inithih='';<br \/>\n       }<br \/>\n    }<br \/>\n  }<br \/>\n  <br \/>\n  function putback() {<br \/>\n   vist=0;<br \/>\n   document.getElementById('dbnmt').innerHTML=fixooih;<br \/>\n   document.getElementById('dbnmt').style.zIndex=123;<br \/>\n   visword='hidden';<br \/>\n   setTimeout(vistog, 1000);<br \/>\n  }<br \/>\n  <br \/>\n  function vistog() {<br \/>\n    if (document.getElementById('mypgr')) {<br \/>\n    setTimeout(vistog, 1000);<br \/>\n    vist++;<br \/>\n    document.getElementById('mypgr').value='' + vist;<br \/>\n    if (vist &gt;= 15) {<br \/>\n      if (visword == 'hidden') {<br \/>\n        visword='visible';<br \/>\n      } else {<br \/>\n        visword='hidden';<br \/>\n      }<br \/>\n      document.getElementById('dbnmt').style.visibility=visword;<br \/>\n      vist=0;<br \/>\n    }<br \/>\n    }<br \/>\n  }<br \/>\n  <br \/>\n  function bnmt() {<br \/>\n    document.getElementById('dbnmt').innerHTML='';<br \/>\n    \/\/document.getElementById('dbnmt').style.zIndex=-786;<br \/>\n  }<br \/>\n      <br \/>\n  function fix_the_js(ota) {<br \/>\n      var tag = document.createElement('script');<br \/>\n      tag.innerHTML = ota.value;<br \/>\n      fncodes[lasttvn]=ota.value;<br \/>\n      var firstScriptTag = document.getElementsByTagName('script')[eval(-1 + document.getElementsByTagName('script').length)];<br \/>\n      firstScriptTag.insertAdjacentElement(\"afterend\", tag);<br \/>\n  }<br \/>\n<br \/>\n  setTimeout(scourjs, 5000);<br \/>\n<\/code><\/p>\n<p> &#8230; and you can see in action with <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/rjmgoogleimages.html---GETME\">the tweaked<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/rjmgoogleimages.html---GETME\" title=\"rjmgoogleimages.htm\">rjmgoogleimages.htm<\/a>&#8216;s <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/rjmgoogleimages.htm\" title=\"Click picture\">adjusted web application<\/a>.<\/p>\n<p>As time goes on, more and more we see the benefits of URLs that start with &#8220;\/&#8221; (but not HTTP:\/\/ nor HTTPS:\/\/ absolute URL designations), especially when it comes to pointing at a &#8220;tool&#8221; (eg. external Javascript).  It has<br \/>\n the benefits of &#8230;<\/p>\n<ul>\n<li>is programmer controlled, so they can place the tool in Document Root folder (in the case of an Apache web server) &#8230; and, in so doing &#8230;<\/li>\n<li>it&#8217;s irrelevant where the &#8220;parent&#8221; (calling) web application is placed &#8230; and &#8230;<\/li>\n<li>mixed content issues are avoided by not using an absolute URL, though it kind of, is!<\/li>\n<\/ul>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d59878' onclick='var dv=document.getElementById(\"d59878\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/override\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d59878' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d59890' onclick='var dv=document.getElementById(\"d59890\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/parameter\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d59890' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d59912' onclick='var dv=document.getElementById(\"d59912\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/onmouseover\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d59912' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n","protected":false},"excerpt":{"rendered":"<p>In yesterday&#8217;s User Interactive Entry Dynamically Controlled Javascript Parameterization Tutorial we constructed a &#8220;p&#8221; paragraph element as below, where hovering over &#8220;Nala&#8221; or &#8220;Luna&#8221; creates the relevant background image effect &#8230; It is, to us, a bit like our &#8220;hardcodings&#8221; &hellip; <a href=\"https:\/\/www.rjmprogramming.com.au\/ITblog\/making-of-user-interactive-entry-dynamically-controlled-javascript-parameterization-tutorial\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12,14,33,37],"tags":[52,181,3913,4377,2525,1750,354,1683,409,471,3362,2212,652,3226,2394,2010,871,875,1836,1886,3301,2411,997,1045,1105,1125,1867,2005,1319,1345,1418],"class_list":["post-59912","post","type-post","status-publish","format-standard","hentry","category-elearning","category-event-driven-programming","category-software","category-tutorials","tag-absolute-url","tag-call","tag-called","tag-calling","tag-child","tag-document-root","tag-dom","tag-dynamic","tag-external-javascript","tag-function","tag-hardcoding","tag-head","tag-javascript","tag-mixed-content","tag-number","tag-object-oriented-programming","tag-onmouseover","tag-oop","tag-override","tag-parameter","tag-parameterization","tag-parent","tag-programming","tag-relative-url","tag-script","tag-setinterval","tag-substitution","tag-tool","tag-tutorial","tag-url","tag-webpage"],"_links":{"self":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts\/59912"}],"collection":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/comments?post=59912"}],"version-history":[{"count":21,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts\/59912\/revisions"}],"predecessor-version":[{"id":61483,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts\/59912\/revisions\/61483"}],"wp:attachment":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/media?parent=59912"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/categories?post=59912"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/tags?post=59912"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}