2011-11-17 4 views
-1

를 제거 I 자바 스크립트 문자

var content='<td> <table> <tr> <td> some_html_code </td> <td> another_html </td> </tr> </table> </td>'

방법 결국 처음에 <td></td>를 제거해야? 해당 문자열을 가정

+2

클라이언트 측에서 자바 스크립트를 사용하는 가정이이 바이올린을 켜는없이 할 수 있다는 것을 의미합니다 사용 가능한 DOM을 가지고 HTML 문자열. 이 문자열은 정확히 어디에서 왔습니까? 문서? - 그렇다면 DOM을 사용하여 '

'을 참조하고 검색하십시오 ... – James

+0

내 질문을 수정했습니다. –

답변

1

당신은 문자열의 일부의 사본을 얻을 slice()을 simpley 수 있습니다.

var tmp_start_td = content.slice(5); 

    var tmp_end_td = tmp_start_td.slice(0,-6); 

    content = tmp_end_td; // result 
2

당신이 가진 전부입니다 :

newcontent = content.substr(4,content.length-5); 

가장 간단한 방법입니다. html (전체 페이지?)의 더 큰 본문에서이 문제를 해결하려는 경우 DOM 작업을 대신 사용하는 것이 좋습니다. 유사 나 :

4

시도 :

content.replace(/^<td>\s?(.+)\s?<\/td>$/, "$1") 

편집

content.replace(/^<td>/, "").replace(/<\/td>$/, "") 
+0

왜요? 이것은 완전한 과잉이다. –

+0

물론 각자 자신에게 달려 있지만, 이렇게하는 것의 이점은 가독성이라고 생각합니다. 한눈에 알아 내려는 것이 상당히 명백합니다. 대안을 추가했습니다. 아마도 조금 더 간단 할 것입니다. –

+0

좋은 대답입니다. :) –

1

당신은 XML 파서 또는 DOM 조작 방법을 사용할 수 있습니다 위의 DOM 방법을 사용의 장점

// Using DOM manipulation methods 
var myEl = document.createElement("tr"); 
myEl.innerHTML = "<td>\n"+ 
       " <table>\n" + 
       " <tr>\n" + 
       "  <td>\n" + 
       "   some_html_code\n" + 
       "  </td>\n" + 
       "  <td>\n" + 
       "   another_html\n" + 
       "  </td>\n" + 
       " </tr>\n" + 
       " </table>\n" + 
       "</td>"; 
var out = myEl.childNodes[0].innerHTML; 

console.log(out); 

한 것은 그들이 검증/정형식 오류의 더 관대 할 수 있다는 것입니다 ... 결과적으로 그들은 <tbody> 요소를 마크 업에 추가 할 수 있습니다.

또는, 당신은 또한 사용할 수있는 DOMParser을 덜 용서 :

// using the DOMParser to parse XML 
var content = "<td>\n"+ 
       " <table>\n" + 
       " <tr>\n" + 
       "  <td>\n" + 
       "   some_html_code\n" + 
       "  </td>\n" + 
       "  <td>\n" + 
       "   another_html\n" + 
       "  </td>\n" + 
       " </tr>\n" + 
       " </table>\n" + 
       "</td>"; 
var parser=new DOMParser(); 
var serializer = new XMLSerializer(); 
xmlDoc=parser.parseFromString(content,"text/xml"); 

var out = ''; 
var tdEl = xmlDoc.childNodes[0]; 
var count = tdEl.childNodes.length; 
alert(count); 
for(var i=0; i<count; i++) { 
    out += serializer.serializeToString(tdEl.childNodes[i]); 
} 

console.log(out); 
관련 문제