[英]replace() function not working in Internet Explorer
我有一个js替换功能来替换预设表单上两个单选按钮旁边的文本。
脚本如下。
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中运行良好,但是,该脚本不会在资源管理器中执行。
我相信它与存在有关, / -
在我正在替换的文本中? 当我使用该功能以no替换文本时, / -
在文本中-在资源管理器中可以正常工作,例如,当我尝试替换文本时。在探险家中不起作用..我假设是因为昏迷和正斜线。 老实说,我已经尝试了一切,但只是无法让这个工作。 任何帮助将不胜感激!!
使用正则表达式尝试:
.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(作为值,而不是字符串),则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, "$0.00"); }
请注意:IE11没有替换美元符号字符$。 因此,我改用字符代码:
$
希望这可以帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.