2014-01-23 6 views
0

동일한 페이지에 몇 가지 다른 테이블이 있지만 불행히도 고유 ID가 할당되지 않았습니다. JS 명령을 사용하여 테이블을 제거하고 싶지만 id를 사용할 수 없기 때문에 테이블에있는 특정 속성을 기반으로 테이블을 삭제할 수 있습니까? 예를 들어, width = "25 %"특성을 가진 페이지의 모든 테이블을 삭제하는 명령이 있습니까?자바 스크립트의 속성으로 개체 삭제

답변

2

같은 것을 할 수 있지만, 나는 또 하나 개의 대안을 제공 할 수 있습니다.

var tables = document.getElementsByTagName('table'); 
for(var i = 0; i < tables.length; i++){ 
    if(tables[i].getAttribute('width') == "25%"){ 
     tables[i].parentNode.removeChild(tables[i]); 
    } 
} 

데모 (http://codepen.io/michaelehead/pen/HfdKx)

+1

+1 좋은 대안 –

+0

고마워요, 내 경우에는 내가 분명히 querySelectorAll을 지원하지 않는 안드로이드 webview 통해 JS 명령을 실행했기 때문에, 대신이 사용하는 데 끝났다. – Noob

4

querySelectorAll을 사용하면이를 수행 할 수 있습니다. 제거

var x = document.querySelectorAll("table[width='25%']"); 
for (var i=0; i<x.length; i++) { //returns array of elements that match the attribute selector 
    x[i].remove(); //call prototype method defined below 
} 

내가 좋은 제거 방법이 노드를 반복 처리 아이들을 삭제 프로토 타입 remove() 함수를 만듭니다

Element.prototype.remove = function() { 
    this.parentElement.removeChild(this); 
} 
NodeList.prototype.remove = HTMLCollection.prototype.remove = function() { 
    for(var i = 0, len = this.length; i < len; i++) { 
     if(this[i] && this[i].parentElement) { 
      this[i].parentElement.removeChild(this[i]); 
     } 
    } 
} 

를 만드는 코드를 발견, 까다 롭습니다.

querySelectorAll 아래 IE8 이상에서 작동하지 않습니다 유의하시기 바랍니다,하지만 프로토 타입 방법의 포스터는 IE8에서 작동해야하지만 7

+0

Greated, thanks :) – Noob

0

예 당신이 할 수 있다고 말했다. 가장 쉬운 방법은 JQuery를 사용하는 것이다. 은 자바 스크립트 코드에서 당신은 작성합니다

$("[attribute=value]").remove() 

그래서 귀하의 경우에는 내가이 이미 몇 가지 솔루션을 가지고 알고 $("table[width='25%']").remove()

+1

절대적으로 작동하지만 jQuery 응답을 요청하지 않았습니다. – SomeKittens

+0

동의. 그냥 도움이 되려고. –

관련 문제