【问题标题】:JavaScript Text ReplaceJavaScript 文本替换
【发布时间】:2018-07-26 07:49:19
【问题描述】:

我正在使用下面的代码来修改图像 url(基本上将 'admin' 添加到 'news' div 内的 URL 的开头。这对于我想要做的事情很好,但它会导致其他一些问题问题,例如阻止嵌入的推文和阻止显示放置在“新闻”div 中的一些广告。

有没有更好的方法来实现我想要的并且不会影响其他代码,因为我一生都无法理解为什么它会导致其他代码出现问题,但删除以下内容可以解决推文和广告?

function replaceText(){
    var theDiv = document.getElementById("news");
    var theText = theDiv .innerHTML;

    theText = theText.replace(/ckfinder/g, 'admin/ckfinder');

    theDiv.innerHTML = theText;
}

这是我正在修改的图片路径:

<img height="267" src="/ckfinder/userfiles/images/XXX/XXX.jpg" width="400" />

但必须是:

<img height="267" src="admin/ckfinder/userfiles/images/XXX/XXX.jpg" width="400" />

【问题讨论】:

  • 不看它坏了什么是不可能的。解决此问题的唯一方法是找到一种模式,该模式适用于您希望应用替换的情况,而不适用于您不希望替换的情况。就这么简单。例如,如果其他元素在 href 中包含此内容,则可以将 src="/ckfinder/ 替换为 src="admin/ckfinder/。或者使用正则表达式,只替换图像文件。简而言之,根据当前可用的信息,不可能为您的问题提供答案。
  • 你能在想要的替换和不需要的替换之间找到足够的具体差异,以便将它们毫无例外地分开吗?如果您不知道如何编写代码,请描述它们之间的差异,然后有人会帮助您将其转换为代码形式,因为您已经展示了最少的研究工作(自己编写代码的合理尝试)。
  • 也许通过在正则表达式中包含正斜杠? f.e.theText = theText.replace(/\"\/ckfinder\//g, '\"admin/ckfinder/');
  • 您应该更新 src 属性而不是标签内的 HTML ..

标签: javascript text replace


【解决方案1】:

您应该更具体,并针对img 标记并直接更新src 属性。

function replaceText() {
  var images = document.querySelectorAll(".news img");

  for (var i = 0; i < images.length; i++) {
    var img = images[i];
    img.src = img.src.replace(/ckfinder/g, 'admin/ckfinder');
  }
}


window.onload = replaceText;
<div id="news">

  <p>Don't want to update this ckfinder</p>

  <img height="267" src="/ckfinder/userfiles/images/XXX/XXX.jpg" width="400" />

</div>

【讨论】:

  • 是的,这非常有效。不过,我只需要将 div 修改为一个类。谢谢!
  • @RyanW 酷,如果它有效,那么请接受这个答案:o)
猜你喜欢
  • 2014-05-24
  • 1970-01-01
  • 1970-01-01
  • 2012-05-01
  • 2015-06-22
  • 2011-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多