简体   繁体   English

为动态生成的表设置函数

[英]setting functions for dynamically generated table

I have a table with dynamically generated content. 我有一个动态生成内容的表。 Each row comes with a button that is meant to serve that row. 每行都有一个按钮,用于为该行提供服务。 In my case I want my button's outerHTML to adopt the name of the name on its row. 在我的情况下,我希望我的按钮的outerHTML在其行上采用名称的名称。

I am having trouble assigning this to my onclick event. 我无法this分配给我的onclick事件。 As is, clicking either button will only repeat the name on the first row. 按原样,单击任一按钮将仅重复第一行上的名称。 I am unsure of the exact proper syntax for getting the button to change to its appropriate row name. 我不确定使按钮更改为适当的行名称的正确语法。

 var erray = ["Todd", "Bill", "Sam"]; var pname = document.querySelectorAll('.pname'); var adoptname = document.querySelectorAll('.adoptname'); for (var i = 0; i < erray.length; i++){ var adoptname = document.querySelectorAll('.adoptname'); pname[i].innerText = erray[i]; adoptname[i].onclick = adoption; function adoption(){ for (var i = 0; i < pname.length; i++) this.outerHTML = pname[i].innerHTML; } } 
 table { border: 1px solid black; } 
 <table> <thead><tr> <th>Name</th> <th>Adopt</th> </tr></thead> <tbody> <tr><td class="pname"></td><td><button class="adoptname">Adopt</button></td></tr> <tr><td class="pname"></td><td><button class="adoptname">Adopt</button></td></tr> </tbody> </table> 

Consider your html is like this; 考虑你的HTML是这样的;

<table>
   <thead>
       <th>Name</th>
       <th>Adopt</th>
   </thead>

   <tbody id="table_body">
   </tbody>
</table>

Now look at the js 现在看看js

var array=["Todd","Bill","Sam"];
var html="";

for(var i=0;i<array.length;i++)
{
   html=html+"<tr><td>"+array[i]+"</td><td><button id=\"adopt-"+array[i]+"\">Adopt</button>";
}

$("#table_body").html(html);

Now look at the click event; 现在看一下click事件;

$("#table_body").on("click","[id^=adopt]",function(){
             var id=$(this).attr("id");
             var name=id.split("-")[1];
             alert(name);
 })
<table>
<thead><tr>
<th>Name</th>
<th>Adopt</th>
</tr></thead>
<tbody id="table_body">
<tr><td class="pname"></td><td><button class="adoptname">Adopt</button></td></tr>
<tr><td class="pname"></td><td><button class="adoptname">Adopt</button></td></tr>    
</tbody>
</table>

<script src="https://code.jquery.com/jquery-3.1.0.min.js"></script>

<script>
window.onload=function()
{
  var array=["Todd","Bill","Sam"];

  for(var i=0;i<array.length;i++)
  {
     $("#table_body tr:nth-child("+(i+1)+") .pname").html(array[i]);
     $("#table_body tr:nth-child("+(i+1)+") .adoptname").attr("id","adopt-"+array[i]);
  }


  $("#table_body").on("click","[id^=adopt]",function(){
         var id=$(this).attr("id");
         var name=id.split("-")[1];
         alert(name);
  });
  }

 </script>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM