2011-11-27 2 views
1

미리 설정된 양식의 두 라디오 버튼 옆에있는 텍스트를 바꿀 js 바꾸기 기능이 있습니다.Internet Explorer에서 replace() 함수가 작동하지 않습니다.

스크립트는 다음과 같습니다.

document.body.innerHTML = document.body.innerHTML.replace(
    "Payment by <b>Moneybookers</b> e-wallet<br>", "" 
); 
document.body.innerHTML = document.body.innerHTML.replace(
    "Maestro, Visa and other credit/debit cards by <b>Moneybookers</b>", 
    "Pago con Diners Club, Mastercard o Visa" 
); 

스크립트는 Chrome 및 Firefox에서 제대로 작동하지만 Explorer에서는 스크립트가 작동하지 않습니다.

저는 대체 할 텍스트 내에 / -과 관련이 있다고 생각합니다. 텍스트를 바꾸지 않고 텍스트를 바꾸려면이 기능을 사용하면 텍스트를 대체하려고 할 때 예를 들어 탐색기에서 제대로 작동합니다. - "Maestro, Visa 및 Moneybookers의 다른 신용/직불 카드" 탐색기에서 작동하지 않습니다. 나는 혼수 상태와 슬래시 때문에 추측하고 있습니다. 솔직히 나는 모든 것을 시도했지만 이것을 작동시킬 수는 없습니다. 어떤 도움이라도 대단히 감사 할 것입니다 !!

+0

/(ie \ /)와 (ie \)를 이스케이프 처리해 보셨습니까? – ManseUK

답변

3

는 정규 표현식을보십시오 : 문제가 해결되지 않으면

.replace(/Payment by <b>Moneybookers<\/b> e-wallet<br>/, "") 

, 그것은 대소 문자를 구별하게하려고합니다. Internet Explorer에서 태그를 대문자로 변환 중일 수 있습니다.

.replace(/Payment by <b>Moneybookers<\/b> e-wallet<br>/i, "") 

다른 점은 전체 본문의 innerHTML을 바꾸는 것이 좋습니다. 페이지의 모든 DOM 요소가 삭제되고 새 HTML이 다시 구문 분석 된 다음 새 요소가 만들어집니다. 아마도 실제로이 텍스트가 포함 된 요소로 바꾸는 것이 좋습니다.

+0

안녕하세요. Nick, 시간 내 주셔서 감사합니다. 제안 된 변경 사항 중 아무런 문제가 없지만 Chrome 및 Firefox에서 변경된 사항은 계속 적용되지만 탐색기에서는 변경되지 않습니다. – LEOPM

+0

@LEOPM 좋아, innerHTML 속성의 값이 무엇인지 예상하고 있는지 다시 확인해보십시오. 문제를 설명 할 수있는 짧은 예제로 좁힐 수도 있다면 아마도 거기에서 갈 수 있습니다. – nickf

0

최근에 도움이 될만한 버그가 수정되었습니다.

대체 할 값이 0 (문자열이 아닌 값) 인 경우 IE11은 실제로 교체하는 대신 대체 문자열을 추가합니다.

buf = buf.replace(/%%TOTALAMOUNT%%/gim, "$" + parseFloat(g_UserPurchases[LCV].CurrencyValue.val()).toFixed(2));       

이 인쇄 : 여기

내가 작업 한거야. " %% TOTALAMOUNT %% 00는"

내가 확인하여 고정 :

if((g_UserPurchases[LCV].CurrencyValue.val() == 0) || (g_UserPurchases[LCV].CurrencyValue.val() === 0)){ 
//IE fix: IE did not like the $ character and didn't replace if val = 0 
buf = buf.replace(/%%TOTALAMOUNT%%/gim, "&#36;0.00"); } 

를하시기 바랍니다 참고 : IE11은 달러 기호 문자 $를 대체하지 않았습니다. 그래서 대신 문자 코드를 사용했습니다.

&#36; 

희망이 있습니다.

관련 문제