2012-02-22 2 views
0

Firefox에서 (10.0.2 사용) 자바 스크립트를 사용하여 테이블의 행을 검색하는 동안 문제가 발생했습니다. 크롬과 IE에서는 다음 작업이 있지만 파이어 폭스에서는 작동하지 않습니다. 파이어 폭스에서FireFox를 사용하여 DOM에서 테이블 행 컬렉션을 검색 할 수 없습니다.

var tbl = "myTable"; 
var allTR; 
allTR = document.getElementById(tbl).childNodes[0].childNodes; 

var table = document.getElementById(tbl); 
var tbody = table.getElementsByTagName("tbody")[0]; 
allTR = tbody.getElementsByTagName("tr"); 
allTR = tbody.children; 
allTR = tbody.childNodes; 
allTR = $("#myTable").find("tbody").find("tr"); 
allTR = $('#myTable tobdy tr'); 

는 결과 allTR 개체 I 그것이 길이 특성을 갖는 것을 알 수있다하더라도 "정의"로 방화범 나타난다.

왜 이런 일이 일어날 지 알고 있습니까?

+0

(HTTP [jsFiddle]에 데모 : // jsfiddle. net /) 도움이 될 것입니다. – Tomalak

+0

모든 다른 브라우저에서 JavaScript를 처리하는 것은 큰 어려움입니다. 가능하다면 jQuery와 같은 라이브러리를 사용하십시오. –

+0

@SteveWellens : 대개는 필요하지 않습니다. 생각보다 쉽습니다. –

답변

0

당신은 테이블의 모든 행을 원하는 경우 :

allTR = document.getElementById(tbl).getElementsByTagName("tr"); 

첫 번째 TBODY에 행을 원하는 경우 :

allTR =document.getElementById(tbl).getElementsByTagName("tbody")[0].getElementsByTagName('tr') 
+0

제공된 예제를 살펴보면 이미이 코드를 사용하고 있는데 실패했습니다. Tomalak은 jsFiddle에 예제를 넣어달라고 요청했습니다. 테스트 코드를 게시 할 준비를하기 위해 로컬로 만들었고 물론 잘 작동했습니다. 필자의 의심은 FireFox가 동적으로 생성 된 테이블과 잘 작동하지 않는다는 것입니다. 내 특정 문제는 런타임에 ajax 호출 및 clientside JS를 사용하여 생성 된 테이블에 묶여 있습니다. – Kberg59

+0

@ Kberg59 :이게 내 대답보다 나은 이유는 무엇입니까? –

0

내가보기에는 테이블에 사용자가 고려하지 않은 빈 공백 노드가있을 수 있습니다. 예를 들어 IE < 9는 DOM의 공백 텍스트 노드를 반영하지 않으며 다른 주요 브라우저는 모두 table.childNodes[0]이 아닌 것으로 생각할 수 있습니다. <tr> 요소의 편리한 cells 속성도 있습니다

var allTR = document.getElementById("myTable").rows; 

, 당신이 그것을 필요로한다 :

가장 간단한 솔루션은 rows로 편리하고 보편적으로 지원되는 DOM의 테이블 속성을 사용하는 것입니다. <tbody> 요소에는 rows 속성도 있습니다.

관련 문제