代码之家  ›  专栏  ›  技术社区  ›  Steffen Moritz

与<a href…>

  •  1
  • Steffen Moritz  · 技术社区  · 7 年前

    我正在使用insertAdjacentHTML在原始链接之前添加新链接。 但我一使用a href就失败了。

    更新 正如许多人指出的那样,我的代码中有语法错误。我把这些修好了

    这是新的代码(但仍然无法工作…我想改变的网页似乎永远加载,什么也没有发生):

    var anchors = document.getElementsByTagName("a");
    
    for (var i = 0; i < anchors.length; i++) {
       anchors[i].href =   "javascript:void(0)";
       anchors[i].insertAdjacentHTML("beforebegin", "<a href='www.google.de'> bold text</a>")
    } 
    

    如果我不添加“a href”,那么整个代码就可以工作了。所以这是可行的:

    anchors[i].insertAdjacentHTML("beforebegin", "<b> bold text</b>")
    

    如果我试一下这个标签..不知怎么的失败了-你能告诉我为什么吗?

    更新2 我终于能够解决这个问题:我意外地创建了一个无限循环@安迪的回答指出了解决这个问题的方法。

    3 回复  |  直到 7 年前
        1
  •  2
  •   Andy    7 年前

    除了拼写错误,代码的最大问题是 getElementsByName 锚节点的实时列表 . 在适当的情况下,这可能很有用,但是在循环中,您添加了一个 新锚定 querySelectorAll 静止的

    var anchors = document.querySelectorAll('a');
    
    for (var i = 0; i < anchors.length; i++) {
      const newAnchor = '<a href="www.google.de">bold text</a>';
      anchors[i] = 'javascript:void(0)';
      anchors[i].insertAdjacentHTML('beforebegin', newAnchor);
    }
    <a href="www.google.com">Google</a>
    <a href="www.bert.com">Bert</a>
    <a href="www.ernie.com">Ernie</a>

    从长远来看,如果你打算大量使用JS和HTML进行编码,你可能会发现总是对JS字符串等使用单引号,对HTML属性使用双引号更容易。这样一来,转义引号的次数就会受到限制。

        2
  •  1
  •   Scoots    7 年前

    anchors[i].href =   "javascript:void(0)
    

    " 最后。

    F12 ).

        3
  •  0
  •   Twisty    7 年前

    查一下你的密码,不见了 " ; .

    var anchors = document.getElementsByTagName("a");
    
    for (var i = 0; i < anchors.length; i++) {
      anchors[i].href =   "javascript:void(0)";
      anchors[i].insertAdjacentHTML("beforebegin", "<a href='www.google.de'> bold text</a>")
    }