2012-08-04 3 views
0

간단한 html 페이지에서 2 개의 테이블을 제거하려고합니다.Greasemonkey를 사용하여 테이블 제거

<html> 
<body> 
<h3>Table 1</h3> 

<table class="details" border="1" cellpadding="0" cellspacing="0"> 
<tbody><tr> 
<th>1</th> 
<td>2</td> 
</tr> 
</tbody></table> 

<h3>Table 2</h3> 

<table class="details" border="1"> 
<tbody><tr> 
<th>1</th> 
<td>2</td> 
</tr><tr> 
<th>3</th> 
<td>4</td> 
</tr> 
</tbody></table> 

</body> 
</html> 

내가 사용 테이블 중 하나를 제거 아무런 문제가 없습니다 : 페이지는, Heres는 페이지 코드 만이 테이블을 포함

var elmDeleted = document.getElementsByClassName('details').item(0); 
elmDeleted.parentNode.removeChild(elmDeleted); 

또는

var elmDeleted = document.getElementsByClassName('details').item(1); 
elmDeleted.parentNode.removeChild(elmDeleted); 

하지만 제거에 실패 두 테이블은 내 사용자 스크립트에서 해당 명령을 연속적으로 사용합니다.

var elmDeleted = document.getElementsByClassName('details').item(0); 
elmDeleted.parentNode.removeChild(elmDeleted); 
var elmDeleted = document.getElementsByClassName('details').item(1); 
elmDeleted.parentNode.removeChild(elmDeleted); 

알려주십시오

답변

1

이전 테이블 # 0을 제거하면 이전 테이블 # 1이 새 테이블 # 0이됩니다. 따라서 테이블 # 1을 얻으려고하면 실패합니다.

1

세바스찬의 대답은 정말 당신이 찾고있을거야 대답이지만, 명확성을 위해, 나는 당신이 그것을 할 수있는 방법을 보여 드리겠습니다 : 당신은 난 사실

var elmDeleted = document.getElementsByClassName('details').item(0); 
elmDeleted.parentNode.removeChild(elmDeleted); 
var elmDeleted = document.getElementsByClassName('details').item(0); 
elmDeleted.parentNode.removeChild(elmDeleted); 

시계를 할 수있는 하나 두 번 모두 .item[0]을 제거하십시오. 페이지의 첫 번째 항목을 두 번 모두 제거합니다. 그렇지 이 : 두 번째, 그 첫 번째가 제거됩니다

var elmDeleted = document.getElementsByClassName('details').item(1); 
elmDeleted.parentNode.removeChild(elmDeleted); 
var elmDeleted = document.getElementsByClassName('details').item(0); 
elmDeleted.parentNode.removeChild(elmDeleted); 

....

은 (내가 부르는) 깔끔한하려면 : (== 컴팩트) 보조 노트로

for(i=0;i<2;i++)(temp=document.getElementsByClassName('details').item(0)).parentNode.removeChild(temp); 

, 당신은 페이지 만이 테이블있을거야 말 때문에, 당신이 모든을 대체 할 수 document.getElementsByClassName('details')document.getElementsByTagName('table')입니다.

또한, 내 소형 버전으로, 당신은 대신 처음 두의 모든 'detail' 테이블을 제거하기 위해 i<document.getElementsByClassName('details').lengthi<2를 교체 할 수 있습니다.

희망이 도움이되었습니다.

관련 문제