Note that there are some explanatory texts on larger screens.

plurals
  1. POJavaScript anonymous functions in script
    primarykey
    data
    text
    <pre><code>&lt;?php ?&gt; &lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;script type="text/javascript"&gt; jTimesheetid = ""; jTimesheetweekending = ""; jPersonnelNo = ""; jLastInsertID = ""; jWorkCodes = ""; tabletdetails = ""; $(document).ready(function() { $.ajax({ type: "POST", url: "php.scripts/timesheet.getsession.php", data: { }, async: false }).done(function( msg ) { obj = JSON.parse(msg); jTimesheetid = obj.timesheetid; jTimesheetweekending = obj.timesheetweekending; jPersonnelNo = obj.personnelno; }); $.ajax({ type: "POST", url: "php.scripts/buildselect.jobs.php", data: { }, async: false }).done(function( msg ) { jQuery("#daddtablet").append(msg); jQuery("#daddtablet select").css('margin','1px'); jQuery("#daddtablet select").css('width','200px'); jQuery("#daddtablet select").css('height','20px'); }); $("#baddtablet").click(function() { $.ajax({ type: "POST", url: "php.scripts/tablet.add.php", data: { jobno: jQuery("#daddtablet select").val() }, async: false }).done(function( msg ) { alert( msg ); window.location.reload(); }); }); $.ajax({ type: "POST", url: "php.scripts/timesheet.getall.php", data: { }, async: false }).done(function( msg ) { //alert( msg ); jTablets = JSON.parse(msg); for (var i = 0; i &lt; jTablets.length; i++) { (function(i) { //jQuery("body").append("x"); jQuery("body").append("&lt;br&gt;"); jQuery("body").append("&lt;div class=\"wrapperouter\" id=\"tablet"+jTablets[i].idtablets+"\"&gt;&lt;/div&gt;"); jQuery("#tablet"+jTablets[i].idtablets).append("&lt;div class=\"jobno\" id=\"jobno_tablet"+jTablets[i].idtablets+"\"&gt;"+jTablets[i].jobno+"&lt;/div&gt;"); jQuery("#tablet"+jTablets[i].idtablets).append("&lt;div class=\"jobname\" id=\"jobname_tablet"+jTablets[i].idtablets+"\"&gt;&lt;span&gt;JobName:&lt;/span&gt;"+jTablets[i].nname+"&lt;/div&gt;"); jQuery("#tablet"+jTablets[i].idtablets).append("&lt;div class=\"jobclient\" id=\"jobclient_tablet"+jTablets[i].idtablets+"\"&gt;&lt;span&gt;JobClient:&lt;/span&gt;"+jTablets[i].companyname+"&lt;/div&gt;"); jQuery("#tablet"+jTablets[i].idtablets).append("&lt;div class=\"weekending\" id=\"weekending_tablet"+jTablets[i].idtablets+"\"&gt;&lt;span&gt;WeekEnding:&lt;/span&gt;"+jTimesheetweekending+"&lt;/div&gt;"); jQuery("#tablet"+jTablets[i].idtablets).append("&lt;div class=\"tablewrapper\" id=\"tablewrapper_tablet"+jTablets[i].idtablets+"\"&gt;&lt;/div&gt;"); var jHTML = "&lt;div class=\"headercolumn0\" id=\"headercolumn0_tablet"+jTablets[i].idtablets+"\"&gt; &lt;span&gt;Dash&lt;/span&gt; &lt;/div&gt; &lt;div class=\"headercolumn1\" id=\"headercolumn1_tablet"+jTablets[i].idtablets+"\"&gt; &lt;span&gt;Description&lt;/span&gt; &lt;/div&gt; &lt;div class=\"headercolumn2\" id=\"headercolumn2_tablet"+jTablets[i].idtablets+"\"&gt; &lt;span&gt;Work Code&lt;/span&gt; &lt;/div&gt; &lt;div class=\"headercolumn3\" id=\"headercolumn3_tablet"+jTablets[i].idtablets+"\"&gt; &lt;span&gt;M&lt;/span&gt; &lt;/div&gt; &lt;div class=\"headercolumn4\" id=\"headercolumn4_tablet"+jTablets[i].idtablets+"\"&gt; &lt;span&gt;TU&lt;/span&gt; &lt;/div&gt; &lt;div class=\"headercolumn5\" id=\"headercolumn5_tablet"+jTablets[i].idtablets+"\"&gt; &lt;span&gt;W&lt;/span&gt; &lt;/div&gt; &lt;div class=\"headercolumn6\" id=\"headercolumn6_tablet"+jTablets[i].idtablets+"\"&gt; &lt;span&gt;T&lt;/span&gt; &lt;/div&gt; &lt;div class=\"headercolumn7\" id=\"headercolumn7_tablet"+jTablets[i].idtablets+"\"&gt; &lt;span&gt;F&lt;/span&gt; &lt;/div&gt; &lt;div class=\"headercolumn8\" id=\"headercolumn8_tablet"+jTablets[i].idtablets+"\"&gt; &lt;span&gt;SA&lt;/span&gt; &lt;/div&gt; &lt;div class=\"headercolumn9\" id=\"headercolumn9_tablet"+jTablets[i].idtablets+"\"&gt; &lt;span&gt;SU&lt;/span&gt; &lt;/div&gt; &lt;div class=\"headercolumn10\" id=\"headercolumn10_tablet"+jTablets[i].idtablets+"\"&gt; &lt;span&gt;T&lt;/span&gt; &lt;/div&gt; &lt;div class=\"headercolumn11\" id=\"headercolumn11_tablet"+jTablets[i].idtablets+"\"&gt; &lt;span&gt;DEL&lt;/span&gt; &lt;/div&gt;"; jQuery("#tablewrapper_tablet"+jTablets[i].idtablets).append(jHTML); /*********************************************/ // cycle through the details $.ajax({ type: "POST", url: "php.scripts/tablet.getdetails.php", data: { tabletid: jTablets[i].idtablets }, async: false }).done(function( msgg ) { objj = JSON.parse( msgg ); for (var cc = 0; cc &lt; objj.length; cc++) { (function(cc) { console.log(objj[cc].idtabletdetails); var tIDTabletdetails = objj[cc].idtabletdetails; jHTML = "&lt;div class=\"column0\"&gt;&lt;input type=\"text\" value=\""+objj[cc].dash+"\" /&gt;&lt;/div&gt; \ &lt;div class=\"column1\"&gt;&lt;input type=\"text\" value=\""+objj[cc].description+"\" /&gt;&lt;/div&gt; \ &lt;div class=\"column2\"&gt;&lt;input type=\"text\" value=\""+objj[cc].workcode+"\" /&gt;&lt;/div&gt; \ &lt;div class=\"column3\"&gt;&lt;input type=\"number\" value=\""+objj[cc].m+"\" /&gt;&lt;/div&gt; \ &lt;div class=\"column4\"&gt; &lt;input type=\"number\" value=\""+objj[cc].tu+"\" /&gt;&lt;/div&gt; \ &lt;div class=\"column5\"&gt; &lt;input type=\"number\" value=\""+objj[cc].w+"\" /&gt;&lt;/div&gt; \ &lt;div class=\"column6\"&gt;&lt;input type=\"number\" value=\""+objj[cc].t+"\" /&gt;&lt;/div&gt; \ &lt;div class=\"column7\"&gt;&lt;input type=\"number\" value=\""+objj[cc].f+"\" /&gt;&lt;/div&gt; \ &lt;div class=\"column8\"&gt;&lt;input type=\"number\" value=\""+objj[cc].sa+"\" /&gt;&lt;/div&gt; \ &lt;div class=\"column9\"&gt; &lt;input type=\"number\" value=\""+objj[cc].su+"\" /&gt;&lt;/div&gt; \ &lt;div class=\"column10\"&gt; &lt;input type=\"number\" value=\"\" /&gt;&lt;/div&gt; \ &lt;div id=\"tablet"+jTablets[i].idtablets+"row"+cc+"\" class=\"column11\"&gt;&lt;span&gt;x&lt;/span&gt; &lt;/div&gt;"; jQuery("#tablewrapper_tablet"+jTablets[i].idtablets).append(jHTML); jQuery("#tablet"+jTablets[i].idtablets+"row"+cc).html(tIDTabletdetails); jQuery("#tablet"+jTablets[i].idtablets+"row"+cc).on('click', function() { //console.log(jTablets[i].idtablets); //console.log(objj[cc].idtabletdetails); $.ajax({ type: "POST", url: "php.scripts/tablets.deleterow.php", data: { idtablets: jTablets[i].idtablets, idtabletdetails: tIDTabletdetails }, async: false }).done(function( msg ) { alert( msg ); window.location.reload(); }); }); })(cc); } }); // end cycle through the details /**********************************************/ jHTML = "&lt;div style=\"clear: both;\"&gt;&lt;input class=\"botbutton\" type=\"button\" id=\"addrowtablet"+jTablets[i].idtablets+"\" value=\"&gt;&gt;\" /&gt; \ &lt;input class=\"botbutton\" type=\"button\" id=\"savetablet"+jTablets[i].idtablets+"\" value=\"save\" /&gt; \ &lt;input class=\"botbutton\" type=\"button\" id=\"deletetablet"+jTablets[i].idtablets+"\" value=\"delete\" /&gt;&lt;/div&gt;"; jQuery("#tablet"+jTablets[i].idtablets).append(jHTML); //add row to tablet jQuery("#addrowtablet"+jTablets[i].idtablets).on('click', function() { $.ajax({ type: "POST", url: "php.scripts/tablet.addrow.php", data: { idtablets: jTablets[i].idtablets }, async: false }).done(function( msg ) { //alert( msg ); window.location.reload(); }); }); //save tablet jQuery("#savetablet"+jTablets[i].idtablets).on('click', function() { alert("alertsepy2..."); }); //delete tablet jQuery("#deletetablet"+jTablets[i].idtablets).on('click', function() { console.log("jTablets[i].jobno: "+jTablets[i].jobno); console.log(jTablets[i].idtablets); $.ajax({ type: "POST", url: "php.scripts/tablet.delete.php", data: { idtablets: jTablets[i].idtablets }, async: false }).done(function( msg ) { //alert( msg ); window.location.reload(); }); }); })(i); } }); }); &lt;/script&gt; &lt;/head&gt; &lt;body&gt; &lt;div id="addtablet" style="border: 1px solid black; overflow: hidden;"&gt; &lt;div id="daddtablet" style="float: left; padding: 0px;"&gt;&lt;/div&gt;&lt;input type="button" id="baddtablet" value="add.tablet" style="margin: 0px; height: 22px; padding: 0px;" /&gt; &lt;/div&gt; &lt;/body&gt; </code></pre> <p>In my code I am using two nested anonymous functions like in the fashion of:</p> <pre><code>(function(i) { (function(cc) { })(cc); })(i); </code></pre> <p>I have been having some problem that seems like a bug in my program where the value of "objj[cc].idtabletdetails;" is not being read properly which lead me to pull it out into a variable at this line:</p> <pre><code>var tIDTabletdetails = objj[cc].idtabletdetails; </code></pre> <p>Once I pulled the value out to tIDTabletdetails the program is running fine. The problem occured when I tried to reference "objj[cc].idtabletdetails" inside of:</p> <pre><code> jQuery("#tablet"+jTablets[i].idtablets+"row"+cc).on('click', function() { //console.log(jTablets[i].idtablets); //console.log(objj[cc].idtabletdetails); $.ajax({ type: "POST", url: "php.scripts/tablets.deleterow.php", data: { idtablets: jTablets[i].idtablets, idtabletdetails: tIDTabletdetails }, async: false }).done(function( msg ) { alert( msg ); window.location.reload(); }); }); </code></pre> <p>I am wondering if maybe there is a better way of retaining the values of "i" and "cc" or if perhaps the anonymous functions should be coded in a different way.</p> <p>Thanks in advance...</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload