2009-06-23 3 views
0

큰 문제가 있습니다. 입력 태그, 원시 텍스트, 링크 태그 등이 들어있는 html 테이블에서 텍스트를 추출하고 텍스트 만있는 새 창 깨끗한 html 테이블에 표시하고 싶습니다.javascript/jquery extract 입력 태그가 포함 된 HTML 테이블의 HTML 텍스트

시료 입력

<TABLE id="test"> 
<TBODY> 
<TR> 
<TD>TEXT 1</TD> 
<TD><a href="/questions">TEXT 2</a></TD> 
<TD><input type="text" value="TEXT 3" ></TD> 
</TR> 
</TBODY> 
</TABLE> 

마법 일 (스크립트)

OUTPUT

<TABLE id="test"> 
<TBODY> 
<TR> 
<TD>TEXT 1</TD> 
<TD>TEXT 2</TD> 
<TD>TEXT 3</TD> 
</TR> 
</TBODY> 
</TABLE> 

나는 거의 모든 곳에서 검색 여기 (이) (구문 분석)을 발생하고 난이 동작하지 않습니다. 사본 붙여 넣기에이 기능이 필요합니다.

도움이 되셨습니까?

답변

1

http://api.jquery.com/ 당신이 내가 HTML에 완벽한 솔루션 (복사 붙여 넣기를 준비 샘플을 기반으로

을 @artlung 감사 보려면 : 여기

코드입니다 파일)

이 리뷰를 요청하면 어쩌면 베팅을 할 수 있습니다. 테?

전체 문제 : 입력, 앵커, 텍스트 만

2.Create 새 창 및 전송 준비 표

솔루션 새로운 CLEAN HTML 테이블에 텍스트

1.Transform HTML 테이블 :

<html> 
<head> 
<title>TEST HTML table with inputs , anchor to text </title> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" type="text/javascript"></script> 
<script type="text/javascript"> 
$(document).ready(function(){ 
var tmp = ''; 

$('table tbody tr').each(function() { //iterate tr 
tmp += '<tr>'; 
$(this).find('td').each(function() { //iterate td 
    tmp += '<td>'; 
    tmp += $(this).text(); 
    $(this).find('input').each(function() { 
      tmp += $(this).val() ; 
     tmp += '</td>'; 
    }); 
}); 
tmp += '</tr>'; 
}); 


$("#demo_button").click(function(e) { 
myWindow=window.open('','MyNewWindow','width=500,height=300,left=200,top=100'); 
myWindow.document.write('<html><head><title>CTRL+C to copy</title></head><body><table><tbody>' + tmp + '</tbody></table></body></html>'); 
myWindow.document.close(); 
myWindow.focus(); 
}); 

}); 
</script> 
</head> 
<body> 
<div> 
<input type="button" id="demo_button" value="Click Me to open window with clean HTML TABLE prepared for copy"/> 

<br/>This is HTML TABLE: 
<TABLE id="test"> 
<TBODY> 
<TR> <TD><b>TEXT 1</b></TD> <TD><a href="#">TEXT 2</a></TD> <TD><input type="text" value="TEXT 3" ></TD> </TR> 
<TR> <TD><span>TEXT 1.1</span></TD> <TD><a href="#">TEXT 2.1</a></TD> <TD><input type="text" value="TEXT 3.1" ></TD> </TR> 
</TBODY> 
</TABLE> 

</div> 
</body> 
</html> 
6

텍스트를 추출하려면 .text() 메서드를 사용하십시오. 입력 값을 얻으려면 .val() 메서드를 사용하십시오.

그래서 각 <TD> 셀을 반복해야하며, 각 셀에는 입력이 있으면 값을 가져옵니다. 우리는 그들을 함께 잇고 .html() 방법을 사용하여 그것을 세포 안으로 되돌려 놓습니다.

$(document).ready(function(){ 
    var tmp = ''; 
    $('table tbody tr td').each(function() { 
     tmp = $(this).text(); 
     $(this).find('input').each(function() { 
       tmp += $(this).val(); 
     }); 
     $(this).html(tmp); 
    }); 
}); 

는, jQuery의 방법에 대한 자세한 내용은

+1

나는 충분히 빠르지 않았다. 좋은 대답. –

+0

+1 좋은 답변이며, 매우 빠릅니다. – karim79

+0

재미 있었지만 세미콜론을 잊어서 편집해야했습니다. – artlung

관련 문제