我有一个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的其他信用卡/借记卡”这个在探险家中不起作用..我假设是因为昏迷和正斜线。老实说,我已经尝试了一切,但只是无法让这个工作。任何帮助将不胜感激!!
答案 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.getElementById
和childNodes
浏览DOM来定位父元素。一旦你有了你的父元素,就可以编写你想要的新内容,而无需替换。
最后看起来像这样:
document.getElementById("someSection").childNodes[0].childNodes[1].childNodes[0].innerHTML = "";