2012-06-21 2 views
-3

자바 스크립트 함수에서 정규 표현식을 사용하여 td의 내용을 바꾸려고합니다. 나는 이것을 사용하고 있습니다 ...IE8에서 javascript 정규 표현식이 작동하지 않습니다.

var re = /<td id="idreplaceme">.+?<\/td>/gi; 
oldDivContent = oldDivContent.replace(re,'<td id="idreplaceme"></td>'); 

이것은 FF와 크롬에서는 작동하지만 IE8에서는 작동하지 않습니다. IE8에서이 작업을 어떻게 수행합니까?

편집 : OldDivContent 문자열

+2

단순히 IE8이 지원되지 않는다는 메시지를 인쇄하십시오. [그리고 당신은 이것을하는 첫번째 사람이 아닐 것입니다] (http://techcrunch.com/2012/04/01/bootstrapped-startup-saves-over-100k-by-dropping-ie/7/). – m0skit0

+0

그것도 유효한 정규식입니까? '. +? '는 무엇을 의미합니까? –

+0

'oldDivContent'는 (은) 무엇입니까? 문자열? DOMElement? – pete

답변

0

약간 다른 정규식 시도입니다 :

var re = /<td id="idreplaceme">[^<]+<\/td>/gi; 
oldDivContent = oldDivContent.replace(re,'<td id="idreplaceme"></td>'); 

또는 변호사를 가정하면 oldDivContent의 어떤 부분을 게시하지 않으려에게, 여기에 자바 스크립트 함수의 작동합니다 정규식 대신 :

function removeContentOfIdentifiedTDs(content, id) { 
    var d = document.createElement('div'), 
     tr = {}, 
     td = {}, 
     i = 0; 
    d.innerHTML = content; //add content to div 
    td = d.getElementsByTagName('td'); 
    for (i = 0; i < td.length; i += 1) { 
     if (td[i].id === id) { //if id matches 
      td[i].innerHTML = ''; //remove content 
     } 
    } 
    return d.innerHTML; //return original html minus removed content 
} 
removeContentOfIdentifiedTDs(oldDivContent, 'idreplaceme'); 
+0

원본이 IE에서 작동하지 않는 특별한 이유가 있습니까? 아니면 그냥 추측입니까? –

+0

'. +? '가 소비해야하는 것보다 더 많이 소비한다고 추측합니다 (IE이기 때문에). – pete

+0

@ pete : 원래 콘텐츠가 무엇인지에 대한 합리적인 가정을 고려하면 분명히 아닙니다. http://jsbin.com/ajeqer, http://jsbin.com/ajeqer/2, http://jsbin.com/ajeqer/ 3, http://jsbin.com/ajeqer/4 –

3

document.getElementById('idreplaceme').innerHTML = ''

+2

게시하려고했습니다. 이 질문은 정규식을 완전히 무의미하게 사용하는데,이 답은 피할 수 있습니다. 그가 오는 조랑말 ... –

+1

공정하게하려면 그는 DOM에없는 것과 같이 사용자 입력에 따라이 교체 작업을 수행하려고 시도했을 수 있습니다. 여전히 정규 표현식을 사용하는 것보다 더 적절한 방법이 있습니다. –

+0

원본이 DOM에있는 방식이 아닌 문자열 인 * minor * 세부 사항을 제외하고. –

관련 문제