2010-07-23 2 views
0

응답 데이터를 html 형식으로 구문 분석하려고합니다. 데이터에 중첩 테이블이 아닌 여러 테이블이 포함되어 있습니다. html로 아약스를로드하고 jquery로 데이터를 반복하려고합니다.ajax로로드 된 html 파일에서 jQuery로 여러 테이블을 반복하는 방법

루핑을 위해 '테이블'로 시작할 때 문제가 발생하지 않습니다. 여러 개의 표가 있고 테이블에 ID가 없습니다. 'tr'을 사용하면 Firefox에서는 잘 작동하지만 IE에서는 작동하지 않습니다.

이 테이블을 통해 어떻게 반복 할 수 있는지 알고 싶습니다. 여기 제가 시도한 코드가 있습니다.

<html> 
<head> 
<title>Html table tParser</title> 
    <script src="http://code.jquery.com/jquery-latest.min.js"></script> 
<script language="JavaScript"> 
$(document).ready(function(){ 
     $.ajax({ 
       url: "htmltables.html", 
       cache: false, 
       success: function(html) 
       { 
       //alert((html.length)); 
       //alert($(html).find('table').size()); 
       $(html).find('table').each(function(index) 
       { 
        document.write('<br />'+'<br />'+ 'Table:' + index + '<br />') 
        $(this).find('tr').each(function(index) { 
         document.write('<br />'+'<br />'+ 'Row :' + index + '<br />');      
         $(this).find('td').each(function(index) {              
          document.write($(this).text() + '<br />'); 
         }); //td 
        }); //tr  
       }); //table 
     } //success 
      }); // $.ajax(
    });//$(document).ready(function  

    </script> 
    </head> 
    <body> 
    </body> 
</html> 

/*------------------------------ */ 
/* Here is the sample html file I was trying to parse*/ 

<html> 
<head> 
<title></title> 
</head> 

<body> 
<table width="200" border="1"> 
    <tr> 
    <td>1</td> 
    <td>1</td> 
    <td>1</td> 
    </tr> 
    <tr> 
    <td>2</td> 
    <td>2</td> 
    <td>2</td> 
    </tr> 
    <tr> 
    <td>3</td> 
    <td>3</td> 
    <td>3</td> 
    </tr> 
</table> 
<table width="200" border="1"> 
    <tr> 
    <td>4</td> 
    <td>4</td> 
    <td>5</td> 
    </tr> 
    <tr> 
    <td>5</td> 
    <td>4</td> 
    <td>5</td> 
    </tr> 
    <tr> 
    <td>6</td> 
    <td>4</td> 
    <td>5</td> 
    </tr> 
</table> 

</body> 
</html> 
+0

이궁을 시도 코드를 포맷! 들여 쓰기 4 칸주세요! – Patricia

답변

0

어쩌면,

$(html).wrap('<span>').parent().find('table') 
+0

감사합니다. Chrome과 Firefox에서 잘 작동합니다. IE는 '표 0'을 인쇄합니다. – surendran

+0

IE에서는 이제 document.write가 문제가되었습니다. 여전히 문제가 하나 더 있습니다. IE는 역순으로 테이블을 처리하고 마지막 테이블을 먼저 처리합니까? $ (html) .wrap ('') .parent(). find ('table'). 각 (function (index) { 이 잘못 되었습니까? – surendran

+0

스팬에 테이블 배치? div를 사용하십시오. – David

1

당신은 숨겨진 요소에 테이블을 추가 한 다음 구문 분석 할 수 있습니다 :

var wrapper = $('<div>').hide().appendTo(document.body); 
// [...] 
success: function(html) { 
    wrapper.append(html); 
    var table = wrapper.find('table'); 
    alert(table.length); // should be at least 1 

    // parse the HTML here 

    wrapper.show(); // will reveal the html 
} 
+0

고맙다. 문제가있다. 크롬과 파이어 폭스에서 작동한다. "wrapper.show()"제외. IE 그냥 'Table0'을 인쇄합니다. 어떻게 IE에서이 작업을 수행 할 수 있습니까? 왜 DOM에 추가하지 않고 '테이블'이 작동하지 않지만 'tr'이 여전히 작동합니까? – surendran

+0

이것은 IE에서 지금 작동합니다. document.write가 문제였습니다. – surendran

관련 문제