2016-09-08 2 views
1

동적으로 생성 된 콘텐츠가있는 테이블이 있습니다. 각 행에는 해당 행을 제공하기위한 버튼이 있습니다. 내 경우에는 단추의 outerHTML이 해당 행의 이름을 채택하기를 원합니다.동적으로 생성 된 테이블에 대한 설정 기능

내 onclick 이벤트에 this을 할당하는 데 문제가 있습니다. 즉, 두 버튼 중 하나를 클릭하면 첫 번째 행의 이름 만 반복됩니다. 적절한 행 이름으로 단추를 변경하는 정확한 구문을 잘 모르겠습니다.

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>

답변

1
<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> 
+0

코드 복사가 [이] (https://jsfiddle.net/86zp2721/)로 이어지는 것처럼 보입니다. 여전히 작동하지 않습니다. – abrahamlinkedin

+0

이제 전체 작동 코드를 확인하고 추가했습니다. 지금. –

2

당신의 HTML을 고려은 다음과 같이이다;

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

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

지금

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); 

지금 클릭 이벤트에서 보는 JS 보면;

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

당신은'테이블 body'에 오타가 있습니다. 나는 그것이'table_body'이어야한다고 생각한다. 또한'table-event' id가 무엇을 의미하는지에 대해서도 확신 할 수 없습니다. 내 질문에 대해서는, 실제로 전체 테이블 행을 생성 할 필요가 없습니다. 나는보기 엔진을 가지고 나를 위해 그것을한다. 필자가 필요로하는 것은 함수를 지정된 행에 트리거하는 것입니다. – abrahamlinkedin

+1

포인팅 해 주셔서 감사합니다. 내 답변을 수정했습니다. –

+1

전체 행을 생성하고 싶지 않다면 제 2 답을 따를 수 있습니다. –

관련 문제