替换不在资源管理器中工作的文本功能

时间:2011-11-27 14:50:50

标签: javascript text replace

我有一个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");}onload=x;

该脚本在Chrome和Firefox中运行良好,但是,该脚本不会在资源管理器中执行。

我认为它与我有关,/ - 在我正在替换的文本中?当我使用该函数替换文本时没有,/ - 在文本中 - 它在资源管理器中工作正常,但是,例如当我尝试替换文本时 - “Maestro,Visa和Moneybookers的其他信用卡/借记卡”这个在探险家中不起作用..我假设是因为昏迷和正斜线。老实说,我已经尝试了一切,但只是无法让这个工作。任何帮助将不胜感激!!

2 个答案:

答案 0 :(得分:1)

不确定它是否相关(我是没有IE的Mac用户)但你不应该使用多行字符串。请改用\n

答案 1 :(得分:1)

innerHTML返回的内容因浏览器而异,因为它没有标准(内容将相同,但显示的方式可能不同)。在某些浏览器上执行替换可能会失败。您应该采取其他方法来进行替换。

更好的方法是将要替换的文本换成span,这样您就可以更轻松地定位要替换的内容。

<span id="thatFirstThing">Payment by <b>Moneybookers</b>e-wallet<br></span>

你能做完之后

document.getElementById("thatFirstThing").innerHTML = "";

P.S。:对身体进行innerHTML替换也有很大的副作用。由于您要替换孔页面的内容。页面上绑定的所有事件处理程序都将消失。

编辑:如果你不能修改HTML页面,那就有点棘手了,因为DOM不适合做这样的事情。您可以做的是通过使用document.getElementByIdchildNodes浏览DOM来定位父元素。一旦你有了你的父元素,就可以编写你想要的新内容,而无需替换。

最后看起来像这样:

 document.getElementById("someSection").childNodes[0].childNodes[1].childNodes[0].innerHTML = "";