Note that there are some explanatory texts on larger screens.

plurals
  1. POpassing value to a dynamic created function in javascript
    primarykey
    data
    text
    <p>I am having some problems while creating a dynamic webpage in javascript.</p> <p>My idea is to read a list of events and people signed up on them. I create a page with all events (each event is a button) and clicking on one of them, see the list of users.</p> <p>This works fine. But now, I am adding a button to export some of these users to an excel file. And I want to add a button with an onClick function like this:</p> <pre><code>...onclick=functionÇ(id_Event, numberOfUsers, listOfUsers)... </code></pre> <p>Inside of the html code generated by javascript. I found some problems also doing like this so I changed so:</p> <pre><code>var td = document.createElement("td"); var input = document.createElement("input"); input.setAttribute("type","button"); input.setAttribute("value","Exportar a Excel CSV"); input.onclick = function() { saveExcelFunctionControl(arrayNumberUsersInEvents[i], response); }; td.appendChild(input); document.getElementById("added"+element[i].id_Event).appendChild(td); </code></pre> <p>I created a global array called arrayNumberUSersInEvents in which I am adding in each possition, people subscribed. i, is the id counter for each position.</p> <p>But even this, I am getting an undefined while reading the value of the firsdt parameter. I think it is a problem of dynamic data, I am not executing the function I want to each time I click the button. Do you know how to do something like this?</p> <p>To sum up: My problem is that I want to pass some arguments to a function in a dynamic created page. I don't know how to pass the data and read the correct parameters inside.</p> <p>I added my code because one user asked for it: </p> <pre><code>for(i = 0; i &lt; element.length; i++){ $(".eventsControl").append( '&lt;li id="listControl'+ element[i].id_Event +'"&gt;'+ '&lt;a href="#EventControl' + element[i].id_Event + '"' + 'data-transition="slidedown"&gt;'+ '&lt;img class="crop" src= "' + element[i].image + '" /&gt;'+ '&lt;h2&gt;' + element[i].name + '&lt;/h2&gt;'+ '&lt;p&gt;' + "Desc: " + element[i].description +'&lt;/p&gt;'+ '&lt;/a&gt;'+ '&lt;/li&gt;' ).listview('refresh'); //console.log(response); //BUCLE for setting all users in each event. Better use some string and after, join all of them header = ' &lt;div width="100%" data-theme = "e" data-role="page" id='+ element[i].id_Event + ' data-url="EventControl' + element[i].id_Event + '"&gt; ' + ' &lt;div data-theme = "a" data-role="header"&gt;&lt;h1&gt;Lista de Asistencia&lt;/h1&gt; ' + ' &lt;a href="#controlList" data-icon="back" data-iconpos="notext"&gt;&lt;/a&gt;&lt;/div&gt;'+ ' &lt;div data-role="content"&gt; ' + ' &lt;fieldset data-role="controlgroup" data-type="horizontal" style="text-align: center"&gt;' + ' &lt;div style="width: 500px; margin: 0 auto;"&gt;'; //header = header + '&lt;input data-theme = "c" onclick="saveExcelFunctionControl(this)" id="saveExcelControl' + element[i].id_Event + '" type="button" value = "Guardar a excel"&gt;&lt;/br&gt;'; eval('var numberUsers' +element[i].id_Event + "=1"); arrayNumberUsersInEvents[i] = 0; if(response.length&gt;0){ bucle = ' &lt;table width="100%" border="1" align="left"&gt;&lt;tr&gt;'+ ' &lt;th&gt;Nombre&lt;/th&gt;'+ ' &lt;th&gt;Primer apellido&lt;/th&gt;'+ ' &lt;th&gt;Segundo apellido&lt;/th&gt;'+ ' &lt;th&gt;NIF&lt;/th&gt;'+ ' &lt;th&gt;Asistencia&lt;/th&gt;'+ ' &lt;/tr&gt;'; for(iData = 0; iData &lt; response.length; iData++){ if(element[i].id_Event == response[iData].id_Event){ //console.log(response[iData].name); bucle = bucle + '&lt;tr&gt;&lt;td&gt;'+ eval('numberUsers' +element[i].id_Event) +'&lt;/td&gt;&lt;td&gt;'+ response[iData].name +'&lt;/td&gt;&lt;td&gt;'+ response[iData].surname1 +'&lt;/td&gt;&lt;td&gt;'+ response[iData].surname2 +'&lt;/td&gt;&lt;td&gt;'+ response[iData].NIF + '&lt;/td&gt;'+ '&lt;td&gt; '+ '&lt;input type="checkbox" id="checkBox'+element[i].id_Event+'_'+iData+'" name="option'+iData+'" value="'+iData+'"&gt; '+ '&lt;/td&gt;'+ '&lt;/tr&gt;'; eval('numberUsers' +element[i].id_Event + "++"); arrayNumberUsersInEvents[i] = arrayNumberUsersInEvents[i]+1; } } //header = header + '&lt;input data-theme = "a" onclick="saveExcelFunctionControl(\""element[i].id_Event "\","" + numberUsers + "\",\"" + response+ "\"")" id="saveExcelControl' + element[i].id_Event + '" type="button" value = "Guardar a excel"&gt;&lt;/br&gt;'; //header = header + '&lt;input data-theme = "a" onclick="saveExcelFunctionControl(""+numberUsers+"")" id="saveExcelControl' + element[i].id_Event + '" type="button" value = "Guardar a excel"&gt;&lt;/br&gt;'; bucle = bucle + '&lt;/table&gt;'; $("#controlList").after(header + bucle + '&lt;div id=added'+element[i].id_Event+'&gt;&lt;/div&gt;'); var td = document.createElement("td"); var input = document.createElement("input"); input.setAttribute("type","button"); input.setAttribute("value","Exportar a Excel CSV"); input.onclick = function() { saveExcelFunctionControl(arrayNumberUsersInEvents[i], response); }; td.appendChild(input); document.getElementById("added"+element[i].id_Event).appendChild(td); } } }, error: function(xhr, status, message) { alert("Status: " + status + "\nControlGetEventsRegister: " + message); } }); </code></pre>
    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.
 

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