2012-11-29 6 views
0

문자열에있는 모든 <td> 태그를 찾아 빨간색으로 만드는 javascript 함수를 만들려고합니다. 그렇게하면 그의 동반자가 부족한 잘못된 태그를 추적 할 수 있습니다. </td>. 내 문제는 내가 페이지의 HTML을 복사하면 모든 들여 쓰기 구조가 손실된다는 것입니다. 어쨌든이 구조를 유지할 수 있습니까? html을 변수에 넣을 때 들여 쓰기 구조 유지

http://jsfiddle.net/KL3u3/2/

$(document).ready(function(){ 
    var html = $('body').html(); 

    html.replace('<td>', '<td><span class="red">'); 
    html.replace('</td>', '</td></span>'); 
    $('#result').text(html); 
}); 

또한, 문자열 교체는 전혀 작동하지 않는 것. 하지만 한 번에 한 가지.

아이디어를 제공해 주셔서 감사합니다.

+1

IT는'하지 뒤로'td' 내부 span'이 아니겠습니까? – Diego

+0

@Diego 네, 물론입니다. 수정 됨. 고마워요 – 1252748

+0

@Diego하지만 실제로는 .. HTML 구조를 인쇄하여 텍스트로 바꾸는 것이므로 (실제로는 내용 페이지에 있음) 문자 이 빨간색으로 표시됩니다. – 1252748

답변

1
$.ajax({ 
    url: document.location, 
    dataType: "html" // get plain source 
}).done(function(text) { 
    $(function() { 
     $("body").text(text).html(function(_, old) { 
      return old.replace(/&lt;\/?td&gt;/g, '<span class="red">$&</span>'); 
     }).css({"white-space":"pre-wrap", "text-align":"left", "font-family":"monospace"}); 
    }); 
}); 
+0

고맙습니다. – 1252748

+0

나를 위해 작동합니다 (Opera에서 사용). 어떤 브라우저에서 오류가 발생합니까? 구현 일 수 있습니다. 의존 시리얼 화'<td>'안전한 방법을 위해 http://stackoverflow.com/a/10416898/1048572 – Bergi

+0

죄송합니다, Bergi, 나는 조금 벗어나야했습니다. 이것은 완벽하게 실제로 작동합니다, 고맙습니다! '_'과 'old'는 어디에서 왔는지 말해 줄 수 있습니까? – 1252748

0

문자열 바꾸기는 첫 번째 발생을 대체합니다. 전역 바꾸기를하려면 정규식을 사용해야합니다.

FIDDLE

var html = $('body').html(); 
    html = html.replace(/(<td>)/gi, '<td><span class="red">'); 
    html = html.replace(/(<\/td>)/gi, '</span></td>'); 
$('#result').text(html); 

또한 해당 문자열 교체 알 불변하고 다시 변수로 선언해야합니다.

TD를 jQuery와 함께 포장하지 않는 이유는 무엇입니까?

$('body').find('td').wrap('<span class="red" />'); 
+0

이것은 좋은 생각 인 것 같습니다.하지만 불행히도 바이올린이 저에게 효과적이지 않습니다 :/ – 1252748