【问题标题】:How to replace a specific href link using Javascript?如何使用 Javascript 替换特定的 href 链接?
【发布时间】:2015-09-16 17:05:19
【问题描述】:

我会再试一次,因为我不确定我上次提出一个非常明确的问题是什么时候......我有一个包含很多链接图像的页面。我想使用 javascript 更改其中一个图像链接(它是徽标)。我不能直接编辑“body”html,但可以将js放在“head”区域。

这里是html代码:

<div id="ctl00">
  <h1 class="logo">
  <a href="http://www.store.domain.co.nz" title="Menswear"><img src="/user/files/logo.png title="Menswear" alt="Menswear"></a>
  </h1>
</div>

我想将 html 更改为:

<div id="ctl00">
    <h1 class="logo">
<a href="http://www.domain.co.nz" title="Menswear"><img src="/user/files/logo.png title="Menswear" alt="Menswear"></a>
</h1>
</div>

基本上我想从 URL 中删除“.store”,但只是这个实例,而不是页面上的所有 URL。

【问题讨论】:

    标签: javascript html replace href


    【解决方案1】:

    一种方法是使用 href 值来查找锚点

    var a = document.querySelector('a[href="http://www.this.link.co.nz"]');
    if (a) {
      a.setAttribute('href', 'http://www.that.link.co.nz')
    }
    <a href="http://www.this.link.co.nz" title="this link">
      <img src="/filename.jpg" />
    </a>

    【讨论】:

    • 如何设置此代码 sn-p?使用 querySelectorAll 返回所有匹配的元素。不过,我仍然更喜欢使用元素和属性。
    【解决方案2】:

    检查 DOM 函数:

    var x = document.getElementsByTagName("a")
    for (i=0;i<x.length;++i) {
      if (x[i].getAttribute("href") == "http://www.this.link.co.nz") {
        x[i].setAttribute("href", "http://www.that.link.co.nz")
        x[i].setAttribute("title", "that link")
        x[i].replaceChild(
          document.createTextNode(
            "changed img:filename.jpg"
          ),
          x[i].firstChild
        )
      }
    }
    <p><a href="http://www.this.link.co.nz" title="this link">
        img:filename.jpg
    </a>
    </p>
    <p><a href="http://www.this.link.co.nz" title="this link">
        img:filename.jpg
    </a>
    </p>

    x 设置为包含所有a 元素的数组。

    【讨论】:

    • 谢谢...嗯,这段代码将替换this.link.co.nz 的所有实例,不是吗?我只希望它替换图像的一个链接的实例(菜单中有this.link.co.nz 的其他实例,我不想更改它们)
    • 我理解您的问题,即您想用相同的目标替换所有 href。您也可以在元素上使用getElementsByTagNamequerySelectorAll,以仅从文档的子树中选择节点。要了解这项研究,请参阅 w3.org/TR/DOM-Level-3-Core/core.html#i-Document 中的文档和元素 IDL 和描述。 querySelector 函数是扩展 api 的一部分。
    • 也许我问错了问题...所以请与我坦白,让我改写...
    • 由于链接有多个实例,我只想更改作为图像链接的实例,我想查找并替换 html 字符串 this.link.co.nz" title= "此链接"> 与 that.link.co.nz" title="该链接"> a> 使用 javascript。我是 Javascript 新手,所以您的第二次回复有点超出我的知识水平。
    • 首先,学习 IDL 需要一些时间,但最终会有所帮助。您无法搜索文本,但如果您了解文档结构,则可以在循环 (x[i].firstChild.tagName=="img") 中检查 x[i] 的子代。但是你需要检查是否有 firstChild,否则 javascript 会产生错误。只需尝试这些功能并习惯使用 javascript 控制台,例如 google-chrome 中的控制台。
    猜你喜欢
    • 2012-01-19
    • 1970-01-01
    • 1970-01-01
    • 2014-05-19
    • 2018-03-22
    • 2013-12-13
    • 2019-08-10
    • 2011-03-07
    • 1970-01-01
    相关资源
    最近更新 更多