{"id":72779,"date":"2026-04-24T03:01:00","date_gmt":"2026-04-23T17:01:00","guid":{"rendered":"https:\/\/www.rjmprogramming.com.au\/ITblog\/?p=72779"},"modified":"2026-04-23T19:33:03","modified_gmt":"2026-04-23T09:33:03","slug":"shower-song-user-functionality-tutorial","status":"publish","type":"post","link":"https:\/\/www.rjmprogramming.com.au\/ITblog\/shower-song-user-functionality-tutorial\/","title":{"rendered":"Shower Song User Functionality Tutorial"},"content":{"rendered":"<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/shower_songs.html\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Shower Song Primer Tutorial\" src=\"\/HTMLCSS\/shower_songs_two.gif\" title=\"Shower Song Primer Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Shower Song User Functionality Tutorial<\/p><\/div>\n<p>Onto yesterday&#8217;s <a title='Shower Song Primer Tutorial' href='#sspt'>Shower Song Primer Tutorial<\/a> we&#8217;ve been shoring up user functionality, today, adding in quite a few emoji button helpers pointing to functionality.<\/p>\n<p>Lots of the thinking revolved around trying to space out the user checkbox clicking on non-mobile control of the HTML input type=checkbox<sup><font size=1>s<\/font><\/sup> &#8230;<\/p>\n<p><code><br \/>\n <a target=\"_blank\" title='HTML disabled attribute information from W3schools' href='https:\/\/www.w3schools.com\/tags\/att_disabled.asp' rel=\"noopener\">disabled<\/a><br \/>\n<\/code><\/p>\n<p> &#8230; attribute &#8230;<\/p>\n<p><code><br \/>\n  var ftime=true;<br \/>\n<br \/>\n  function whendo() {<br \/>\n    var ccnt=0;<br \/>\n    var talisti=eval(-1 + eval('' + document.body.innerHTML.split(' style=\"z-index:599').length)); \/\/('span');<br \/>\n    var talist=document.getElementsByTagName('sup');<br \/>\n    var inlist=document.getElementsByTagName('input');<br \/>\n    for (var ik=0; ik&lt;inlist.length; ik++) {<br \/>\n      if (inlist[ik].outerHTML.indexOf('checkbox') != -1) {<br \/>\n        ccnt++;<br \/>\n      }<br \/>\n    }<br \/>\n    if (eval('' + talist.length) &lt; ccnt) {<br \/>\n        setTimeout(whendo, 1000);<br \/>\n    } else {<br \/>\n        talist=document.getElementsByTagName('a');<br \/>\n        for (var iki=0; iki&lt;talist.length; iki++) {<br \/>\n          if (talist[iki].outerHTML.indexOf(' class=\"processytplay\"') != -1) {<br \/>\n            talist[iki].onmousedown=function(event){ myac(event.target);  };<br \/>\n          }<br \/>\n        }<br \/>\n        setTimeout(function(){ cball(false); }, 500);<br \/>\n    }<br \/>\n   <br \/> <br \/>\n  }<br \/>\n<br \/>\n  function cball(to) {<br \/>\n    var inlist=document.getElementsByTagName('input');<br \/>\n    for (var ik=0; ik&lt;inlist.length; ik++) {<br \/>\n      if (inlist[ik].outerHTML.indexOf('checkbox') != -1) {<br \/>\n       if (to) {<br \/>\n        inlist[ik].setAttribute('disabled',to);<br \/>\n       } else {<br \/>\n        inlist[ik].removeAttribute('disabled');<br \/>\n       }<br \/>\n      }<br \/>\n    }<br \/>\n    <br \/>\n    if (ftime) {<br \/>\n      ftime=false;<br \/>\n      if (!navigator.userAgent.match(\/Android|BlackBerry|iPhone|iPad|iPod|Opera Mini|IEMobile\/i)) {<br \/>\n        setTimeout(whendo, 1000);<br \/>\n      }<br \/>\n    }<br \/>\n  }<br \/>\n<\/code><\/p>\n<p> &#8230; in <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/shower_songs.html-GETME\" rel=\"noopener\">the changed<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/shower_songs.html-GETME\" rel=\"noopener\">second draft<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/shower_songs.html\" rel=\"noopener\">Shower Songs<\/a> <a href='#myifq'>as below<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\/shower-song-user-functionality-tutorial\/' rel=\"noopener\">Shower Song User Functionality Tutorial<\/a>.<\/p-->\n<hr>\n<p id='sspt'>Previous relevant <a target=\"_blank\" title='Shower Song Primer Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/shower-song-primer-tutorial\/' rel=\"noopener\">Shower Song 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\/shower_songs.html\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Shower Song Primer Tutorial\" src=\"\/HTMLCSS\/shower_songs.jpg\" title=\"Shower Song Primer Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Shower Song Primer Tutorial<\/p><\/div>\n<p>We&#8217;re onto a new music related project today, with that familiar theme of &#8220;Sequential Play of YouTube Music Videos&#8221; where today&#8217;s project, so far, just hones in on the &#8220;audio stream only of those YouTube videos&#8221;.<\/p>\n<p>We have some provisos with our <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/shower_songs.html\" rel=\"noopener\">Shower Songs<\/a> collection &#8230;<\/p>\n<ul>\n<li>it will work on mobile but not to the automated state non-mobile is in, on this first draft &#8230;<\/li>\n<li>more display niceties to come &#8230;<\/li>\n<li>user content functionality to come &#8230;<\/li>\n<\/ul>\n<p> &#8230; but feel free to set yourself up (but careful of &#8220;bathroom mist&#8221; not being good for electronic devices) with today&#8217;s <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/shower_songs.html_GETME\" rel=\"noopener\">first draft<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/shower_songs.html\" rel=\"noopener\">Shower Songs<\/a> as below &#8230;<\/p>\n<p><iframe id=myifq style=width:98%;height:1500px; src='\/\/www.rjmprogramming.com.au\/HTMLCSS\/shower_songs.html'><\/iframe><\/p>\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='#d72770' onclick='var dv=document.getElementById(\"d72770\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/song\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d72770' 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='#d72779' onclick='var dv=document.getElementById(\"d72779\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/disabled\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d72779' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Onto yesterday&#8217;s Shower Song Primer Tutorial we&#8217;ve been shoring up user functionality, today, adding in quite a few emoji button helpers pointing to functionality. Lots of the thinking revolved around trying to space out the user checkbox clicking on non-mobile &hellip; <a href=\"https:\/\/www.rjmprogramming.com.au\/ITblog\/shower-song-user-functionality-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,37],"tags":[112,113,5477,1580,202,2382,609,795,822,997,5476,1172,3224,1238,1319,1369,1493],"class_list":["post-72779","post","type-post","status-publish","format-standard","hentry","category-elearning","category-event-driven-programming","category-tutorials","tag-attribute","tag-audio","tag-audio-stream","tag-cell","tag-checkbox","tag-disabled","tag-input","tag-mobile","tag-music-2","tag-programming","tag-shower","tag-song","tag-stream","tag-table","tag-tutorial","tag-video","tag-youtube"],"_links":{"self":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts\/72779"}],"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=72779"}],"version-history":[{"count":9,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts\/72779\/revisions"}],"predecessor-version":[{"id":72791,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts\/72779\/revisions\/72791"}],"wp:attachment":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/media?parent=72779"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/categories?post=72779"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/tags?post=72779"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}