2012-11-07 5 views
1

나는 키워드가 제공되어있는 기사의 바로 첫 번째 항을 가져 위키 백과 API를 사용하고 jQuery에 문을 작성합니다.일반 자바 스크립트

은 내가 id가 위키 사업부에 표시하기 전에 JSON 응답에서 서식있는 텍스트를 추출하지만, 사이드 바 같은 원치 않는 정보의 일부 (테이블 &에있는 클래스 이름 인포 박스를 가지고)를 억제해야 -

$.getJSON("http://en.wikipedia.org/w/api.php?" + 
      "action=mobileview&format=json&page=" + 
      keyword + "&redirect=no&sections=0&prop=text&" + 
      "sectionprop=toclevel%7Clevel%7Cline%7Cnumber" + 
      "%7Cindex%7Cfromtitle%7Canchor&callback=?", 
      function(json) { 
        $('#wiki').html(json.mobileview.sections[0].text) 
           .find("dl,sup,.thumb,table.infobox,table.metadata") 
           .remove().end(); 
      } 
); 

내가 요청한 위키 백과 페이지의 HTML 코드가 포함 된 JSON 응답에서 adapted the jQuery trick to remove tags/selectors을했습니다. 위의 스 니펫을 HTML/JS로 작성된 Windows 8 Store 앱에서 사용하고 싶습니다.

$('#wiki').html(json.mobileview.sections[0].text) 
      .find("dl,sup,.thumb,table.infobox,table.metadata") 
      .remove().end(); 

내가 자바 스크립트 안돼서 - 나는 네이티브 자바 스크립트에 다음 행을 변환하고 jQuery를 사용하지 않고 선택 제거 코드를 구현하고 싶습니다. 누구든지이 줄을 plain-vanilla JavaScript로 변환 할 수 있습니까?

답변

1
var wiki = document.querySelector('#wiki'); 
wiki.innerHTML = json.mobileview.sections[0].text; 

var content = wiki.querySelectorAll("dl,sup,.thumb,table.infobox,table.metadata"); 

for (var i = 0; i < content.length; i++) { 
    if (content[i].nodeName.toUpperCase() === "A") 
     content[i].parentNode.insertBefore(content[i].firstChild, content[i]); 

    content[i].parentNode.removeChild(content[i]); 
} 

IE8 이상을 포함한 대부분의 브라우저에서 작동합니다.

+0

감사합니다! 그것은 매우 도움이되었습니다. 나는 또한 그 내용 안에 하이퍼 링크를 보여줄 필요가 없지만 하이퍼 링크 텍스트는 유지한다. 여기 몇 가지 샘플을 검토 한 - http://stackoverflow.com/questions/4536329/whats-the-best-way-to-strip-out-only-the-anchor-html-tags-in-javascript-given 내 요구 사항에 맞게 조정할 수는 없습니다. 동일한 코드를 확장하여 콘텐츠에서 앵커 태그를 제거하지만 텍스트를 유지하는 방법은 무엇입니까? – mvp

+0

@mvp : 앵커에는 텍스트와 중첩 요소 만 있다고 가정하면 업데이트 된 답변에서 코드를 사용할 수 있습니다. 앵커가 현재 DOM 선택의 일부가 아닌 경우'a '를 선택자의 끝에 추가하거나', a [href]'를'href' 속성이있는 것만 원한다면 추가하십시오. –

관련 문제