【问题标题】:replace text function not working in explorer替换文本功能在资源管理器中不起作用
【发布时间】:2012-01-07 08:29:52
【问题描述】:

我有一个 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 中运行良好,但是该脚本在 Explorer 中没有运行。

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

【问题讨论】:

  • 如果您在浏览器中查看 JavaScript 控制台,您会看到语法错误。所以这就是开始的地方。您应该会在状态栏的左侧看到一个黄色的 !,如果单击它会显示错误。

标签: javascript text replace


【解决方案1】:

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

【讨论】:

  • 谢谢汤姆,老实说我是一个真正的新手,我将如何调整我的脚本来适应我们\n...?非常感谢!
  • document.body.innerHTML=document.body.innerHTML.replace("Payment by &lt;b&gt;Moneybookers&lt;/b&gt;\ne-wallet&lt;br&gt;","");
【解决方案2】:

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

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

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

你可以做的事

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

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

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

最后它看起来像这样:

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

【讨论】:

  • “innerHTML 返回的内容因浏览器而异...” 正确,但无关紧要,因为 OP 正在 设置财产,不读。 “……因为没有标准……” 正在处理being standardized as part of HTML5
  • @T.J.Crowder 他既读了又设置了document.body.innerHTML的值,你说他没读是什么意思?
  • 嘿,非常感谢您查看此内容。我只是对这整个 js 事情的新手。您能否建议我如何将其修改到脚本中,事实上是其他人为我写的……我应该将 span 脚本放在我的脚本之前吗……?你在哪里有''thatfirstthing''很抱歉-我在里面放什么......?非常感谢!!
  • @HoLyVieR:不知何故,我设法错过了他正在阅读它(但它就在那里,就像白天一样)。嗬! :-) 不过,更大的问题还是语法错误。
  • @LEOPM 对于 HTML 部分,您必须编辑页面的内容。在您的页面中有Payment by &lt;b&gt;Moneybookers&lt;/b&gt;(或输出它的代码)的地方,您可以在文本周围添加spanthatFirstThing 只是您可以赋予该跨度的 id 的一个示例。它可以是任何东西,你只需要给它一个名字并重用这个名字就可以在你的 javascript 代码中访问它。
猜你喜欢
  • 2021-08-12
  • 1970-01-01
  • 2014-04-02
  • 2016-05-09
  • 1970-01-01
  • 1970-01-01
  • 2018-05-01
  • 2012-09-18
相关资源
最近更新 更多